首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不允许使用OR的可变长度查找的Regex技术

不允许使用OR的可变长度查找的Regex技术
EN

Stack Overflow用户
提问于 2014-07-17 16:22:37
回答 1查看 160关注 0票数 2

我想了解regex引擎是如何工作的,它不允许对下面描述的技术进行可变长的查找。这通常用于创建具有特定单词但不能有前一个单词的模式。

例如,在本文中:RegEx that matches a word that NOT succeeds another one的想法是匹配单词多维数据集,只有在前面的20个字符中不存在small这个词的情况下。

因此,anubhava对这个问题的回答是:

代码语言:javascript
复制
.*?small.{0,20}cube|(.*?cube)

他的评论是:

实际上,这是一种简单的技术,可以绕过regex引擎不允许可变长度查找的功能。在这个正则表达式中,我们匹配不需要的东西,在左手边使用管道(OR)构造,最后使用捕获的组使管道中最右边的部分匹配。

我认为这种技术非常有用,但不知道如何使用。我想了解regex引擎是如何创建这种regex的。有人能帮我解释一下吗?

顺便说一句,不知道这种技术在所有regex引擎中是否有效,所以我已经用java标记了这个问题,因为我将主要使用它。

EN

回答 1

Stack Overflow用户

发布于 2014-07-17 16:27:53

这样做的目的是为了更好地匹配负数,而不是正数,所以如果负数匹配,那么它就匹配了,而在第一组中,你不会得到正匹配。

然而,它实际上并不是以同样的方式工作;如果是这样的话,正则表达式引擎将使用它。

代码语言:javascript
复制
put the cube on top of the small cube
        ^ should match cube, but doesn’t, since smallcube is preferred
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24808793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档