繁体   English   中英

正则表达式用于匹配数字,后跟特定的模式

[英]RegEx for matching digits not followed by specific pattern

我试图建立一个正则表达式来匹配以下样式的线条:

123 warehouse
124 token warehouse.
153token token abc123; etc. - warehouse 
223abdc token abc green warehouse 

但是这些行不是:

53red warehouse.
323 green token token etc warehouse. 

我构建的正则表达式使用负前瞻,但在https://regex101.com/上进行测试会匹配所有行:

\d+(?!( ?red| ?green)).*(\bwarehouse\b)

有什么错误,应如何纠正? 如果很重要,则正则表达式应在Java下编译(转义必要的字符后)。

如果使用所有格量词来防止回溯,则您的模式有效:

\\d++而不是\\d+

这是regex101的演示,它是pcre,但Java regex也应支持这些演示

拥有123red warehouse.

您的正则表达式匹配1个或多个数字12然后不匹配红色或绿色3red然后匹配warehouse a space的任何字符。

在前几个数字后添加负前瞻:

\d+(?!\d)(?! ?(?:red|green)).*(\bwarehouse\b)

演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM