首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex来匹配所有内容,直到模式中有异常为止。

Regex来匹配所有内容,直到模式中有异常为止。
EN

Stack Overflow用户
提问于 2021-02-06 11:02:21
回答 1查看 190关注 0票数 2

这是我的领地

代码语言:javascript
复制
\d+%[^\.][^0-9]*?((?!original).)percentage*

我希望它从一个百分比(即10%)到单词百分比

  • 10%“任何”百分比

除非其中含有“原始”一词:

  • 10%原百分比

所以,在“百分比”这个词之前,“任何”都可以是任何东西,除非他的单词是“原始的”。

我已经得到了我的正则表达式,但只有当“百分比”在新行的要领时才能正确工作

在某些情况下,10%的销售开始于原始百分比->我的正则表达式与这个字符串匹配,但我不想这样做,因为它包含单词“原始”-- 10%的销售以一定百分比开始->我的正则表达式与这个字符串匹配,因为它不包含“原始”一词--原始字符串的10% 销售额的百分比更高-->我的regex与这个字符串不匹配,这是可以的,因为它包含了“原始”这个词(也许是因为新行以百分比开头?)原售的10% 的百分比->我的正则表达式与这个字符串匹配,但我不想这么做,因为它包含了“原始”这个词。

对不起,如果我的解释有点奇怪,英语不是我的第一语言。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-06 11:11:44

您必须重复这个部分((?!original).),并在percentage*之后省略*,因为它可以选择性地重复e字符。

然后,如果不想在中间匹配数字,则可以使用[^\d\r\n]而不是.匹配除换行符或数字以外的任何字符。

代码语言:javascript
复制
\d+%[^.](?:(?!original\b)[^\d\r\n])*\bpercentage\b

模式匹配:

  • \d+%匹配1+数字和%
  • [^.]匹配除点以外的任何字符(请注意,这是一个宽匹配,您也可以使用空格)
  • (?:非捕获群
    • (?!original\b)[^\d\r\n]匹配除数字或换行符以外的任何字符,当wat直接在右边不是original

  • )*关闭组并重复0+次
  • \bpercentage\b匹配percentage

Regex演示

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

https://stackoverflow.com/questions/66076108

复制
相关文章

相似问题

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