[英]Regex to match everything except this regex
我認為對很多人來說這是一件簡單的事情,但目前我對正則表達式的知識非常有限。 我希望匹配除字符串中的兩位數字之外的所有內容。
例如:
測試 22 KLO4567
QE 45 C2C
LOP 10 G7G400
現在我發現正則表達式匹配兩位數字:\\ d {2}
符合以下條件:
測試22 KLO4567
QE 45 C2C
LOP 10 G7G400
現在在我看來,將這個正則表達式轉換為匹配所有內容但是“\\ d {2}”相當容易。 我搜索了很多,但我似乎無法完成它。 我希望這里有人可以提供幫助。
這僅適用於正則表達式引擎支持后面的內容:
^.+?(?=\d{2})|(?<=\d{2}).+$
說明:
|
將兩種情況分開:
這匹配從字符串開頭( ^
)到遇到\\d{2}
內容。
這匹配字符串的結尾,從兩位數后面的位置。
如果你的正則表達式引擎不支持外觀(例如JavaScript),我認為使用純正則表達式解決方案是不可能的。
你可以匹配第一部分:
^.+?(?=\d{2})
然后獲取匹配結束的位置,將2添加到該數字,並從該索引獲取子字符串。
你正確拒絕正則表達式中的搜索通常是相當棘手的。
在你的情況下,我認為你想要[^\\d{2}]
,但是,這很棘手,因為你的其他字符串也包含兩位數,所以使用它的正則表達式不會選擇它們。
我會使用這個正則表達式(使用PCRE 8.36
但也應該在其他人工作):
\\*{2}\\w*\\*{2}
說明:
\\*{2}
....精確地匹配“*”兩次
\\w*
....匹配“單詞字符”零或無限次
找到一個正則表達式很簡單:
^(.*?[^\d])\d{2}([^\d].*?)$
解釋:
要測試此reges,您可以使用此鏈接
它將匹配第一次出現的兩位數,但因為OP說只有一個它正確地完成了工作。 我希望它可以與每個正則表達式引擎一起使用,因為沒有太復雜的使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.