jasonzou 发表于 2014-04-10 20:27

还是关于正则表达

import re
text = "ASDF QBC123,A.S123D A.S123D A,BSD"
text_tmp = re.split(',',text)
print text_tmp
l = re.search(r'^A.', text_tmp)
print l.group()

这是我的实验程序,我希望将 字符串中的A.后面的S123D提取出来,原来打算直接用re.search(r'^A.', text)后来发现只能认到了ASDF的那个A
然后想用split空格,将text分割成 ASDF及QBC123, A.S123D 还有A.S123D 最后A,BSD,然后用'^A.'来匹配
结果报错“TypeError: expected string or buffer”

play9091 发表于 2014-04-10 23:07

search 只會找到第一個就停下來了……

要把所有符合條件的找出來要用 findall 。

你試一下吧!不行再討論!

yakczh_cu 发表于 2014-04-10 23:25

回复 1# jasonzou patten=re.compile(r'A\.S.*?D')
index=0
while True:
        match=patten.search(text,index)
        if match==None:
                break
        result=match.group()
        print(result)
        index=match.end()

欧阳西风 发表于 2014-04-11 09:15

这个最好还是用findall吧, 另外"^"锚位是指匹配字符串的开头,在这儿应该没必要使用"^".import re

text = "ASDF QBC123,A.S123D A.S123D A,BSD"
pattern = re.compile(r'(?<=A\.)(+)')
matches = pattern.findall(text)
print matches
页: [1]
查看完整版本: 还是关于正则表达