这是一个涉及python中条件正则表达式的问题:
我想把字符串"abc"与.匹配
match(1)="a"
match(2)="b"
match(3)="c"
Run Code Online (Sandbox Code Playgroud)
但也匹配字符串" a"用
match(1)="a"
match(2)=""
match(3)=""
Run Code Online (Sandbox Code Playgroud)
以下代码ALMOST执行此操作,问题是在第一种情况下,match(1)="a"
但在第二种情况下,match(4)="a"(不是match(1)所需的).
事实上,如果你遍历所有组for g in re.search(myre,teststring2).groups():,你得到6组(不是预期的3组).
import re
import sys
teststring1 = "abc"
teststring2 = " a"
myre = '^(?=(\w)(\w)(\w))|(?=\s{2}(\w)()())'
if re.search(myre,teststring1):
print re.search(myre,teststring1).group(1)
if re.search(myre,teststring2):
print re.search(myre,teststring2).group(1)
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?(注意这是Python 2.5)
也许...:
import re
import sys
teststring1 = "abc"
teststring2 = " a"
myre = '^\s{0,2}(\w)(\w?)(\w?)$'
if re.search(myre,teststring1):
print re.search(myre,teststring1).group(1)
if re.search(myre,teststring2):
print re.search(myre,teststring2).group(1)
Run Code Online (Sandbox Code Playgroud)
这确实a在两种情况下都可以提供,但也许它与您未显示的其他情况下的方式不匹配(例如前面没有空格,或后面有空格和多个字母,因此总长度匹配的字符串是!= 3......但我猜你在这种情况下不想要匹配......?)