(?:)
和(?=)
之间的区别我假定第一个返回匹配函数中匹配的文本(但不适用于子表达式组号,但不知道是否我在预先感谢:-)我知道他们用于什么,但我不知道他们如何行事不同。也可以重复字符应用于前瞻断言?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