[英]Python Regex Sub with Multiple Patterns
我正在嘗試使用正則表達式子分組來匹配多個模式,並將匹配項替換為具有與以下字符串相似格式的數據文件的星號。 但是,我只得到了第一場比賽的預期結果。 后續的匹配消耗了我沒想到的字符串。 有沒有更好的方法可以在下面獲得所需的輸出?
import re
myString = '-fruit apple -number 123 -animal cat -name bob'
match = re.compile('(-fruit\s+)(\w+)|'
'(-animal\s+)(cat)|'
'(-name\s+)(bob)')
print(match.sub('\g<1>*', myString))
電流輸出:
-fruit * -number 123 * *
所需輸出:
-fruit * -number 123 -animal * -name *
交替不會重置組號,因此您的組編號為(1)(2)|(3)(4)|(5)(6)
但您只重新插入了組1-但應該對組3和也是5 由於替換時不匹配的組被視為空字符串,因此您可以簡單地將它們添加到\\g<1>\\g<2>\\g<3>*
。
在旁注中,我建議在使用正則表達式模式( r'pattern'
)時使用原始字符串,因此您不必懷疑在哪里將反斜杠加倍(例如\\\\b
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.