【发布时间】:2014-01-18 05:41:36
【问题描述】:
我一直在查找正则表达式教程以尝试掌握它们,并且一直在享受此链接中的教程,直到出现问题:http://regexone.com/lesson/12
我似乎无法弄清楚“匹配”和“捕获”之间的区别是什么。我写的任何内容似乎都没有选择“捕获”部分下的文本(甚至没有.*)。
编辑:下面是一个让我感到困惑的教程示例:(.* (.*)) 被认为是正确的,(.* .*) 不是。这是教程的问题还是我不理解的问题?
【问题讨论】:
-
匹配是一个是否的问题,它匹配或不匹配。捕获返回表达式的一部分(括号中的部分)您可以捕获多个部分(可能是嵌套的)并返回一个列表
-
我不确定返回在正则表达式中的含义,我只是理解匹配
-
通过“捕获”,您可以告诉引擎匹配的哪些部分应该存储在某种寄存器中,以便您可以在表达式本身或替换值中使用值,具体取决于您正在使用表达式的函数。例如,
([a-z])\1将匹配任何重复的字母。(...)表示您要捕获此部分 natch 的值,\1允许您访问第一个(并且仅在这种情况下)捕获的值。或者换句话说:\1匹配第一个捕获组 ((...)) 匹配的任何内容。 -
您最熟悉哪种编程语言?使用您熟悉的编程语言可以轻松形成一个清晰的示例。
-
我熟悉几种语言,但我想我唯一一次在编程语言中看到正则表达式是在折旧的 PHP 中
标签: regex