我需要以某种模式匹配正则数字,这种模式已经有效,但前提是它前面没有(+
。
示例字符串我想在以下内容中进行有效匹配:12
,12.5
,200/300
,200/300/400%
,1/2/3/4/5/6/7
示例字符串我希望在(+10% juice)
,(+4)
我已经可以获得(\d+[/%.]?)+
的所有有效匹配,但是我需要帮助来排除我想要没有有效匹配的示例字符串(这意味着,只有在没有字符串{{1时才匹配]就在前面提到的模式前面。)
有人可以帮帮我吗?我已经尝试过(+
(例如!
),但出于某种原因,我无法以我需要的方式工作。
(您可以使用http://gskinner.com/RegExr/来测试正则表达式)
编辑:我的确可能使用错误的词语。我不想检查searchstring是否以?!(\(\+)(\d+[/%.]?)+
开头,但我想确保我的String前面没有(+
。
使用以下输入尝试regexr:
匹配:(+
选中(\d+[/%.]?)+
的复选框(在文字中搜索多个匹配项)
文本:
global
目前,它将在所有4行中找到匹配项。我想要一个不再在第2行找到匹配的正则表达式。
答案 0 :(得分:1)
你想要的正则表达式构造是&#34;负面观察&#34; - 见http://www.regular-expressions.info/lookaround.html。负面的lookbehind被定义为(?<!DONTMATCHME)
,其中DONTMATCHME是你不想在表达式的下一位之前找到的表达式。最重要的是,后卫位不被认为是比赛本身的一部分
你的表达应该是:
(?<![+\d/\.])(\d+[/%.]?)+
编辑 - 将负面的lookbehind更改为任何不是+或其他数字的字符!
编辑#2 - 在主捕获括号外移动了lookbehind。在比赛前扩大了不可接受的字符范围,以包括/
&amp; .