正向前看,(也)匹配空字符串



我正在做一些Groovy代码的实习,我遇到了以下模式:

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

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

w+

既然这不是我的代码,我想使用如此复杂的东西可能是有原因的,但同时它看起来会非常低效。这两者有什么区别吗?他们似乎在http://regexpal.com/上给出了相同的结果

为什么不使用w+ 的答案是捕获组,这并不能解释任何可能的微妙或逻辑在正则表达式虽然。

(可选的)前缀和后缀字符串被部分捕获以备以后使用,如m所示。buettner ^w很可能是[^w],这意味着第二个最终组永远不会匹配(尽管可能有多行输入的情况,请参阅模式匹配标志,我自己看不到,因为w+不会匹配并消耗和结束行)。

同时使用(?=)*表明作者可能对正则表达式不太熟悉,通常您使用查找来约束(*在这里有效地取消),或优化匹配。

一种礼貌的方法可能是假设regex在开发过程中被"调整",并且已经留下了一些不需要的子模式…

最新更新