正则表达式用于匹配没有特定模式的数字
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 下编译(在转义必要的字符之后)。
与123red warehouse.
您的正则表达式匹配 1 个或多个数字 12
然后不是红色或绿色 3red
然后是任何字符 a space
warehouse
.
在第一位数字之后添加一个否定前瞻:
\d+(?!\d)(?! ?(?:red|green)).*(\bwarehouse\b)
如果您使用 possessive quantifier 来防止回溯,您的模式有效:
\d++
而不是 \d+
Here is a demo at regex101 这是 pcre 但 Java 正则表达式也应该支持这些。
我正在尝试构建一个正则表达式来匹配以下行样式:
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 下编译(在转义必要的字符之后)。
与123red warehouse.
您的正则表达式匹配 1 个或多个数字 12
然后不是红色或绿色 3red
然后是任何字符 a space
warehouse
.
在第一位数字之后添加一个否定前瞻:
\d+(?!\d)(?! ?(?:red|green)).*(\bwarehouse\b)
如果您使用 possessive quantifier 来防止回溯,您的模式有效:
\d++
而不是 \d+
Here is a demo at regex101 这是 pcre 但 Java 正则表达式也应该支持这些。