首页
学习
活动
专区
圈层
工具
发布

REGEX难题
EN

Stack Overflow用户
提问于 2019-11-21 06:01:22
回答 2查看 57关注 0票数 2

我需要帮助让这个选择器和regex

待处理的行:

例如,对于这个难题,这个例子frase有可变的长度,但是它以foobar结尾。

预期结果:

例: frase有可变的长度,但以foobar结尾。

我必须在同一行“难题”中过滤,以便如果遇到“示例frase”,但它在"foobar“之前遵循”难解“,它不会从一开始就进行选择,而不是在第二个”示例frase“中适当地选择

下面是我最接近的方法:

/(例如frase).*(foobar)/

它缺乏对“难题”的否定,但我没有找到一种好的方法来做到这一点,这当然没有用

/(例如frase).(?(难题))(Foobar)/

EN

回答 2

Stack Overflow用户

发布于 2019-11-21 07:19:54

让我们将问题分解成多个部分,分别检查每个部分,然后将它们重新组合在一起。

从本质上说,任务可以简化为以下一组规则:

找到以下所有文本:

  • 以“示例frase”开头:(\bexample frase\b) --这将故意避免通过\b标记短语边界来匹配“示例兄弟会”、“my示例frase”等。
  • 以“foobar”结束:(\bfoobar\b) --这避免了过早终止选择,例如在"foobarbaz“上。
  • 不包含“难解”一词:(?!.*\bconundrum\b) -(?!.*\bconundrum\b)

现在把所有这些放在一起,最后的正则表达式如下所示:

代码语言:javascript
复制
/(\bexample frase\b)(?!.*\bconundrum\b).*(\bfoobar\b)/
票数 1
EN

Stack Overflow用户

发布于 2019-11-21 06:10:47

你可以使用消极的前瞻性:

代码语言:javascript
复制
/example frase(?!.+conundrum.+foobar).+/

Regex101链路

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

https://stackoverflow.com/questions/58968227

复制
相关文章

相似问题

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