求解一个python正则表达式有关问题

求解一个python正则表达式问题import recr re.compile(怎么写呢)s abcd123d123ad1v123print cr.fi

求解一个python正则表达式问题
import re
cr = re.compile("怎么写呢")
s = "abcd123d123ad1v123"
print cr.findall(s)

我想找出以a开头,以123字符串结尾,但是中间不出现123这个字符串的字符串。
比如上题,结果应为:abcd123和ad1v123。

请教大侠这个正则该如何写呢?

[解决办法]
加个?非贪婪匹配,找到第一个123就返回了,可以保证中间不出现123

Python code
>>> import re>>> res = r'a.*?123'>>> s = 'abcd123d123ad1v123'>>> print re.findall(res,s)['abcd123', 'ad1v123']>>>
[解决办法]
Python code
Python 2.7.2+ (default, Oct  4 2011, 20:03:08) [GCC 4.6.1] on linux2Type "help", "copyright", "credits" or "license" for more information.>>> import re>>> s = "abcd123d123ad1v123">>> patt = re.compile(r'(a.+123)')>>> print patt.findall(s)['abcd123d123ad1v123']>>> patt = re.compile(r'(a.+?123)')>>> print patt.findall(s)['abcd123', 'ad1v123']>>>