Python条件正则表达式

Mik*_*ike 5 python regex

这是一个涉及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)

Ale*_*lli 7

也许...:

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......但我猜你在这种情况下想要匹配......?)