首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有可能在regex java中为lookahead定义一个作用域?

有没有可能在regex java中为lookahead定义一个作用域?
EN

Stack Overflow用户
提问于 2013-02-23 22:05:49
回答 2查看 356关注 0票数 3

我想在java中使用负向先行,但我不能只将它应用于文本的某一部分。它从光标一直使用到末尾。有没有可能以某种方式做到这一点?

例如:我有一个包含不定'ab's的字符串: ababJJJababab

我只想把没有‘ab’的中心部分分组(即JJJ)。所以这是我的正则表达式:

代码语言:javascript
复制
^(?:ab)*((?!.*ab.*).*)(?:ab)*$

问题是,负向先行超出了它的容器组,并试图避免‘ab’直到文本的末尾(这将导致根本找不到任何匹配)。请注意,我的实际问题要复杂得多,我不是在寻找绕过这个特定示例的方法。有没有办法在regex中指定某种边界来定义先行的范围,避免它应用于文本的其余部分?

先谢谢你...

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-23 22:27:21

在这种特殊情况下,您根本不需要负向先行。您只需要使中间量词不贪婪,这样它就不会消耗尾随的“ab”:

代码语言:javascript
复制
^(?:ab)*(.*?)(?:ab)*$
票数 1
EN

Stack Overflow用户

发布于 2013-02-23 23:06:15

在这种特定情况下,最小匹配应该是可行的。但是,在一般情况下,您需要如下所示:

代码语言:javascript
复制
(?sx)
(?:abc) ( (?: (?!abc) .)* ) (?:abc)

我也不信任你在第一部分和最后部分的所有明星。你知道你的模式与空字符串匹配,不是吗?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15041369

复制
相关文章

相似问题

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