我希望我的正則表達式能夠匹配任意後跟某些數字的隨機字符串 - 但是如果兩個匹配都是空的,我希望匹配失敗。我目前正在構建正則表達式,如下所示:匹配兩個組,但它們都不應該爲空
regex = u'^(.*)'
if has_digits: regex += u'(\d*)'
regex += ext + u'$' # extension group as in u'(\.exe)'
rePattern = re.compile(regex, re.I | re.U)
但這也匹配空白文件名(僅限擴展名)。不能換我的頭周圍像類似的問題:
- In a regular expression, match one thing or another, or both
- Matching a group that may or may not exist
額外的複雜性在於,第二組(數字)可能無法添加
所以有效:
abc%.exe
123.exe
如果has_digits爲真:
abc 123.exe # I want the second group to contain the 123 not the first one
無效:.exe
難道你不能用''替換'*'運算符嗎? –
@FedericoPiazza否,因爲即使has_digits爲真,數字可能不存在 - 如果has_digits爲true,那麼第一個組是可選的_if_有一些數字 –
您能顯示一些有效/無效的樣本匹配嗎? – anubhava