2
我想捕獲兩個組,但其中一個位於非捕獲組內。即非捕獲組內的捕獲組
import re
text = 'column{fields}'
parsed = re.search(r'(\w+)(?:{(\w+)})', text)
parsed.groups() # prints ('column', 'fields')
這樣的作品,但如果我的文字只是'column'
,regex
是NoneType。在(?:{(\w+)})?
末
>>> text = 'column'
>>> parsed = re.search(r'(\w+)(?:{(\w+)})?', text)
>>> parsed.groups()
('column', None)
?
後column
即(?:{(\w+)})
可選將使部分:
我以爲當我在做'(?:{(\ w +)}'時'我實際上聲明'{(\ w +)}'是可選的。爲什麼不? – whitenoisedb
要在正則表達式中使任何部分可選,您需要在它後面放置'?'(如答案所示)。 – anubhava
是的,但我雖然'(...)?'和'(?:...)'是一樣的。在那種情況下,是否是(?:...)?還原劑? – whitenoisedb