我有一些多行文本,每次運行 python 程式時都會發生變化。我想搜索搜索模式的出現,然后回溯以查找以以下內容開頭的第一行:object-group network
示例文本(可以是幾萬行長):
object-group network CISCO_ROUTER
network-object host 1.1.1.1
network-object object NCPVGW03_10.1.1.2
network-object object NCPVGW04_10.1.1.3
network-object object SGAVGW01_10.2.2.2
network-object object NPLVGW02_10.1.6.2
network-object object NCPVGW02_10.1.1.3
network-object object C1121-8P_FGL2418L267_10.8.8.1
network-object object NDEVGW01_10.6.4.2
network-object object HD999901_192.168.0.3
network-object object ISR4321-FDO21172C94_10.8.8.2
network-object object DMRVGW02_10.1.1.4
object-group network CISCO_SWITCH
network-object host 1.1.1.1
network-object object HD138203_10.198.80.3
network-object object HD165103_10.5.0.1
network-object object HD166207_10.5.1.7
network-object object HD134402_10.194.176.102
network-object object HD137602_10.196.176.102
network-object object HD131603_10.192.240.103
network-object object HD134104_10.194.128.104
network-object object HD166503_10.53.192.103
network-object object HD165510_10.53.64.110
network-object object HD202001_10.33.48.30
network-object object HD132706_10.193.160.106
network-object object HD700041_10.88.64.141
我想找到:network-object object HD700041_10.88.64.141然后第一次出現object-group network當我回顧時。
我試過這個正則運算式搜索模式: (object-group network. )[\w\W] ?(?<=HD700041_10\.88\.64\.141)
但結果是: object-group network CISCO_ROUTER
向后看object-group network CISCO_SWITCH時如何找到第一次出現?
uj5u.com熱心網友回復:
您可以使用
(?m)^(object-group network.*)(?:\n(?!object-group).*)*\n.*HD700041_10\.88\.64\.141
請參閱正則運算式演示。詳情:
(?m)^- 一行的開始(object-group network.*)- 第 1 組:object-group network開頭的行(?:\n(?!object-group).*)*- 零個或多個不以object-group字串開頭的行\n- 換行.*HD700041_10\.88\.64\.141- 除換行符以外的任何零個或多個字符,盡可能多,然后是HD700041_10.88.64.141文本。
請注意,141最后也可能匹配141in 141000。(?!\d)如果要匹配特定141值,請在末尾添加。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/337892.html
上一篇:深入淺出Java記憶體模型
