簡體   English   中英

具有多種模式的Python Regex子

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM