這是一個涉及Python中的條件正則表達式的問題:Python的條件正則表達式
我想匹配字符串
match(1)="a"
match(2)="b"
match(3)="c"
而且還匹配字符串" a"
與
match(1)="a"
match(2)=""
match(3)=""
以下代碼幾乎是這樣做的,問題是在第一種情況下match(1)="a"
bu t在第二種情況下,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)
有什麼想法? (注意這是針對Python 2.5的)
你說得對 - 這是僅有的兩個案例。正如我所希望的那樣工作。關鍵是有「?」在匹配組(\ w?)內部,以便匹配該字母,或者不匹配任何內容。謝謝! – Mike 2010-06-28 16:14:23
@Mike,不客氣 - 總是樂於幫忙! – 2010-06-28 16:43:47