(?:)
和(?=)
之間的區別我假定第一個返回匹配函數中匹配的文本(但不適用於子表達式組號,但不知道是否我在預先感謝:-)我知道他們用於什麼,但我不知道他們如何行事不同。也可以重複字符應用於前瞻斷言?Javascript/Perl正則表達式
1
A
回答
2
所以關於這兩個構造的事情是不要返回任何東西。 (?: ...)
的使用方式與普通(...)
相同,只是其結果未被捕獲並且未返回。在Perl中,我相信Javascript,由於Regex引擎無需記住匹配的子字符串,因此可以提高性能。
(?=)
的想法是不同的。你可以將任何一個正則表達式的組件認爲是「吃掉」匹配字符串的一些子集。但不是(?=)
。另一種想法是,後(?=)
匹配在(?=)
本身匹配的字符串完全相同的地方,而不是在它像一個正常組結束後匹配。
3
(?:)
創建一個組,不會被捕獲,即存儲在任何後向引用中。它通常用在你需要一個組的地方,但不關心它在一個捕獲組中。這可以提高性能並清理反向引用。
(?=)
是一個超前的斷言。它被用來尋找一些東西,而不是消耗任何角色作爲匹配。
相關問題
- 1. 正則表達式(正則表達式)
- 2. 正則表達式(正則表達式)
- 3. 正則表達式正則表達式正則表達式使用正則表達式,但不是與Python
- 4. PHP-MySQLi替換爲正則表達式/正則表達式/正則表達式
- 5. 正則表達式正則表達式返回的值正則表達式
- 6. 正則表達式正則表達式模仿正則表達式
- 7. 正則表達式表達
- 8. 正則表達式表達
- 9. Python的正則表達式:「喜歡」正則表達式模式?
- 10. 正則表達式
- 11. 正則表達式
- 12. 正則表達式?
- 13. 正則表達式
- 14. 正則表達式
- 15. 正則表達式
- 16. 正則表達式。
- 17. 正則表達式
- 18. 正則表達式
- 19. 正則表達式@#$ +:=&* _-
- 20. 正則表達式
- 21. 正則表達式
- 22. 正則表達式
- 23. 正則表達式
- 24. 正則表達式
- 25. 正則表達式
- 26. 正則表達式
- 27. 正則表達式
- 28. 正則表達式
- 29. 正則表達式
- 30. 正則表達式
當你說不回來時,你的意思是什麼? – rubixibuc 2011-06-14 03:02:39
這是捕獲'()'和非捕獲'(?:)'組之間的區別。使用非捕獲功能後,您無法找到源文件中匹配該特定子模式的文本,只有在整個模式匹配的情況下它必須匹配。 – Dan 2011-06-14 03:27:51