簡體   English   中英

正則表達式:除某些模式外的所有內容

[英]Regex: Everything except some pattern

我有一個字符串:

富吧
foo1#9 0x103806f4 bar1
foo2#10 0x0f6dd704 bar2
foo3 bar3

我嘗試了以下方法:

^((?!#[\\ d] {1,2} 0x [0-9a-f] {8})。)* $

得到

富吧
foo3 bar3


^((?!#[\\ d] {1,2} 0x [0-9a-f] {8})。)*

得到

富吧
foo1
foo2
foo3 bar3

但是我想得到的是

富吧
foo1 bar1
foo2 bar2
foo3 bar3

我該如何實現?

你需要做的替代,而不是按順序以獲得所需的輸出匹配。

\s*#\d{1,2} 0x[0-9a-f]{8}

使用上面的正則表達式,然后將匹配項替換為空字符串。

演示

如果您需要開頭和結尾的非空白字符,則使用負超前行將無法完成任務。 您可以匹配預期的輸出,如下所示:

^(\S+).*?(\S+)$

然后,可以用您喜歡的語言組合匹配結果: example ...

>>> import re
>>> s = '''foo bar
foo1 #9 0x103806f4 bar1
foo2 #10 0x0f6dd704 bar2
foo3 bar3'''
...
>>> for m in re.finditer(r'(?m)^(\S+).*?(\S+)$', s):
...     print(" ".join(m.groups()))

foo bar
foo1 bar1
foo2 bar2
foo3 bar3

與其使用正則表達式,不如考慮分割字符串並將索引連接在一起。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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