Q
瞭解否定字符類
3
A
回答
3
+
使一個f
在2個或更多的'
之後被找到後使正則表達式引擎回溯。你可以用'
替代負先行防止(以免消耗比f
和'
以外的文字,當您使用[^f]
,性格成爲比賽的一部分,因爲一個否定的字符類是消費模式和向前看符號是零寬度斷言)。
''+(?!['f])
見regex demo。這裏,(?!['f])
將防止匹配,如果2個或更多'
符號跟在f
或'
之後。另外,您可以使用限制量詞{2,}
(2次或更多次出現次數)編寫它:'{2,}(?!['f])
。
如果您正則表達式引擎支持佔有慾量詞防止回溯到量化模式,使用一個:
''++(?!f)
^^
見another demo(寫作的另一種方式是'{2,}+(?!f)
)。
如果您使用的是不支持的佔有慾量詞一個.NET regex庫,你可以使用,而不是原子團(即以同樣的方式作爲佔有慾量詞,但整個組):
(?>'{2,})(?!f)
1
,因爲那一撇是不是一個f
一個字符。
示例正則表達式匹配「至少有2個撇號,其後跟一個而不是f
」。
你看,最後一場比賽確實沒有包括那個f
,而是撇號。所以,如果你要排除的最後一場比賽,你可能更喜歡這個表達式
''+[^'f]
0
所有你需要的是一個atomic group所以正則表達式將無法回溯到一個單引號,這是不是一個「F」:
/(?>''+)[^f]/
你可以玩它here。
如果你的引擎支持possessive quantifiers,那麼你可以使用他們太:
/''++[^f]/
如果你想接受的任何字符既不撇號,也不是F,則可以定義排除只是另一個角色:
/''+[^'f]/
相關問題
- 1. PVS-Studio是否瞭解Unicode字符?
- 2. 瞭解字符數組[]和字符串
- 3. 正則表達式 - 理解否定字符類
- 4. 瞭解字符串加密
- 5. C瞭解行字符串
- 6. 瞭解日期字符串
- 7. 瞭解HTML元字符集
- 8. 瞭解字符引用
- 9. 瞭解字符串#succ
- 10. 誤解了類和定義
- 11. POSIX字符分類與否定
- 12. 如何檢查字符串中是否只定義了符號?
- 13. 否定字符類匹配字符序列
- 14. 檢查事件發生後是否解析了字符串?
- 15. 定期exception.Any字符除了
- 16. 瞭解函數成分與否定
- 17. Python瞭解類
- 18. 瞭解類圖
- 19. 瞭解proc類
- 20. 瞭解類型
- 21. 瞭解類
- 22. fread()將所有列類指定爲字符,甚至指定了
- 23. 試圖瞭解字符串類型的DLL返回
- 24. 問題了解字符串模式
- 25. JavaScript,瞭解查詢字符串
- 26. 瞭解格式字符串漏洞
- 27. 瞭解字符串方法條
- 28. 瞭解mysql字符集和整理
- 29. 瞭解PHP中的字符編碼
- 30. 瞭解反向字符串的代碼
它匹配*兩個撇號*和一個不是'f'的字符(第三個撇號)... – deceze
''匹配第一個撇號,'+'匹配第二個,'[^^f]'匹配第三個... – kennytm