如何編寫正則表達式以匹配任何不符合特定模式的字符串?我面臨的情況是必須匹配(A和〜B)模式。正則表達式 - 如何匹配除特定模式以外的所有內容
157
A
回答
182
你可以使用一個前瞻斷言:
(?!999)\d{3}
這個例子不是999
其他三個數字相匹配。
但是,如果你碰巧不具有此功能的正則表達式實現(見Comparison of Regular Expression Flavors),你可能要建立與你自己的基本特徵正則表達式。
基本語法兼容的正則表達式只能是:
[0-8]\d\d|\d[0-8]\d|\d\d[0-8]
但這也匹配任何三個數字序列,是不是999
。
15
與模式匹配並使用宿主語言反轉匹配的布爾結果。這將更清晰可維護。
4
1
0
(B)|(A)
那麼使用了什麼組2個捕獲...
25
如果你想在一個字符串匹配一個單詞A和不匹配一個單詞B.例如: 如果你有一個文本:
1. I have a two pets - dog and a cat
2. I have a pet - dog
如果你要搜索的文本行是有一隻狗爲寵物和沒有貓您可以使用此正則表達式:
^(?=.*?\bdog\b)((?!cat).)*$
它會發現只有第二行:
2. I have a pet - dog
7
notnot,復活這個古老的問題,因爲它有一個簡單的解決方案,WASN」提到。 (在爲regex bounty quest做一些研究時發現了你的問題。)
我面臨的情況是我必須匹配(A和〜B) 模式。
這個基本的正則表達式是簡單得嚇人:B|(A)
你只是忽視了整個比賽和檢查組1捕獲,其中將包含A.
一個例子(與所有有關的免責聲明解析HTML中的正則表達式):A是數字,B是內<a tag
正則表達式的數字:<a.*?<\/a>|(\d+)
Demo(看1組右下窗格)
參考
0
我的答案在這裏可能會解決你的問題,以及:
https://stackoverflow.com/a/27967674/543814
- 而不是替換,您可以使用匹配。
- 而不是組
$1
,你會讀取組$2
。 - 集團
$2
被禁止在那裏,你會避免。
實施例:
Regex.Match("50% of 50% is 25%", "(\d+\%)|(.+?)");
第一捕獲組指定要避免的模式。最後一個捕獲組捕獲其他所有內容。簡單地讀出那個組,$2
。
相關問題
- 1. 正則表達式匹配正則表達式模式外的所有內容
- 2. 正則表達式匹配除「/」以外的所有內容
- 3. 正則表達式 - 如何匹配除特定模式以外的所有內容
- 4. 匹配除指定正則表達式以外的所有內容
- 5. 正則表達式 - 匹配除特定字符串以外的任何內容
- 6. 正則表達式匹配除2位數以外的所有內容
- 7. 正則表達式 - 匹配除HTML標籤以外的所有內容
- 8. 正則表達式匹配除前兩個字符以外的所有內容
- 9. 正則表達式 - 如何匹配除特定字符串以外的所有內容?
- 10. 正則表達式將匹配除括號內的所有內容外
- 11. 正則表達式匹配除了所有空格之外的任何內容
- 12. 如何用正則表達式匹配所有內容?
- 13. 正則表達式來排除特定的模式匹配
- 14. 正則表達式,如何選擇除模式外的所有內容?
- 15. 使用正則表達式查找除此模式以外的所有內容
- 16. 正則表達式匹配特定模式排除特定模式
- 17. 正則表達式:匹配除一個單詞外的所有內容
- 18. 匹配除特定字符串以外的所有內容
- 19. 如何使用正則表達式匹配特定模式?
- 20. 替換除特定字符之外的所有正則表達式匹配
- 21. C#正則表達式匹配特定區域外的匹配
- 22. 正則表達式匹配特定類中div的內容
- 23. 正則表達式匹配除youtube之外的所有url
- 24. 正則表達式匹配括號外的所有匹配項?
- 25. 正則表達式匹配問號後的所有內容?
- 26. 正則表達式匹配冒號前的所有內容?
- 27. Perl正則表達式匹配@字符後的所有內容
- 28. 正則表達式 - 在輸入特定符號後匹配所有內容
- 29. 正則表達式:匹配以外的所有字符串
- 30. ruby正則表達式匹配除特定字符以外的任何字符
預讀不是標準的正則表達式語法,它是一個Perl擴展,它只能在Perl,PCRE(Perl兼容的RegEx)或其他非標準實現中工作 – Juliano 2009-03-04 19:26:54
它可能不是標準的,但不要大多數現代語言都支持它?什麼語言*不支持這些日子的預測? – 2009-03-04 19:45:46
的確如此。但大多數正則表達式支持此功能(請參閱)。 –
Gumbo
2009-03-04 19:49:02