Let's try to write some rules that describe all strings that don't have two consecutive a's:
- the empty string is in the language
- if x is a string in the language ending in a, you can add b to the end to get another string in the language
- if x is a string in the language ending in b, you can add an a or a b to it to get another string in the language
This lets us write down a grammar:
S -> e | aB | bS
B -> e | bS
That grammar should work for us. Consider your string bbababb:
S -> bS -> bbS -> bbaB -> bbabS
-> bbabaB -> bbababS -> bbababbS
-> bbababb
To turn a regular grammar such as this into a regular expression, we can write equations and solve for S:
S = e + aB + bS
B = e + bS
Replace for B:
S = e + a(e + bS) + bS
= e + a + abS + bS
= e + a + (ab + b)S
Now we can eliminate recursion to solve for S:
S = (ab + b)*(e + a)
This gives us a regular expression: (ab + b)*(e + a)