java - 正则表达式用于匹配没有特定模式的数字

标签 java regex regex-lookarounds regex-negation regex-greedy

我正在尝试构建一个正则表达式来匹配以下行样式:

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 下编译(在转义必要的字符之后)。

最佳答案

如果您使用 possessive quantifier,您的模式有效防止回溯:

\d++ 而不是 \d+

Here is a demo at regex101这是 pcre,但 Java 正则表达式也应该支持这些。

关于java - 正则表达式用于匹配没有特定模式的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56399120/

相关文章:

Javascript 正则表达式(负)lookbehind 在 firefox 中不起作用

java - 单词前面没有正则表达式

java - LDAP插入异常

Python 正则表达式后视需要固定宽度的模式

python - 正则表达式从任何地方排除任何数字

java - 将任何字符串格式化为逗号分隔

java - 正则表达式:匹配逗号后不跟数字

java - 无法在 linux 中使用 javamail api 发送电子邮件

java - SFTP 读取目录中的所有文件

java - RESTEasy - 动态添加资源类