【发布时间】:2019-10-17 08:12:00
【问题描述】:
我正在尝试构建一个正则表达式来匹配以下线条样式:
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 下编译(在转义必要的字符之后)。
【问题讨论】:
-
您能说明一下您的要求吗?你想避免第二批呢?我能猜到的是,您想避免某些单词(“red”、“green”)出现在“warehouse”之前的行吗?这些是唯一需要考虑的三个词,还是还有更多?
-
我想避免在数字后面紧跟几个字(例如红色或绿色)。稍后在表达式中它们应该被允许,请参见第 4 个示例。还有几个固定词,都可以用析取词来表达(?red| ?green|?blue|?yellow)
标签: java regex regex-lookarounds regex-negation regex-greedy