我想了解regex引擎是如何工作的,它不允许对下面描述的技术进行可变长的查找。这通常用于创建具有特定单词但不能有前一个单词的模式。
例如,在本文中:RegEx that matches a word that NOT succeeds another one的想法是匹配单词多维数据集,只有在前面的20个字符中不存在small这个词的情况下。
因此,anubhava对这个问题的回答是:
.*?small.{0,20}cube|(.*?cube)他的评论是:
实际上,这是一种简单的技术,可以绕过regex引擎不允许可变长度查找的功能。在这个正则表达式中,我们匹配不需要的东西,在左手边使用管道(OR)构造,最后使用捕获的组使管道中最右边的部分匹配。
我认为这种技术非常有用,但不知道如何使用。我想了解regex引擎是如何创建这种regex的。有人能帮我解释一下吗?
顺便说一句,不知道这种技术在所有regex引擎中是否有效,所以我已经用java标记了这个问题,因为我将主要使用它。
发布于 2014-07-17 16:27:53
这样做的目的是为了更好地匹配负数,而不是正数,所以如果负数匹配,那么它就匹配了,而在第一组中,你不会得到正匹配。
然而,它实际上并不是以同样的方式工作;如果是这样的话,正则表达式引擎将使用它。
put the cube on top of the small cube
^ should match cube, but doesn’t, since smallcube is preferredhttps://stackoverflow.com/questions/24808793
复制相似问题