4

我正在使用一些 Groovy 代码进行实习,我遇到了以下模式:

(?=(^\w)*)(\w)+(?=(^\w)*)

它基本上只是找到单词(单词字符的连续集合)来筛选标点符号等。有理由不简单地使用这种模式吗?

\w+

由于这不是我的代码,我想可能有理由使用如此复杂的东西,但同时它似乎效率很低。两者有什么区别吗?他们似乎在http://regexpal.com/上给出了相同的结果。

4

1 回答 1

0

为什么不使用\w+的答案只是捕获组,但这并不能解释正则表达式中任何可能的微妙之处或逻辑。

(可选)前缀和后缀字符串被部分捕获以供以后使用,并且正如 m.buettner ^\w所指出的那样,很可能意味着[^\w]第二个最终组永远不会匹配(尽管可能存在多行输入的情况,请参阅Pattern Matching Flags,我自己看不到一个,因为\w+不会匹配和消耗以及行尾)。

两者的使用(?=)表明*作者可能对正则表达式不太熟悉,通常您使用环顾四周来约束(*在此处有效地撤消)或优化匹配。

一种礼貌的方法可能是假设正则表达式在开发过程中被“调整”,并且留下了一些不需要的子模式......

于 2013-06-11T12:24:02.950 回答