我想匹配包括“ - ”的数字与不带前导的零和没有“ - ”的普通数字。因此我想使用正则表达式。
正则表达式
应该匹配0 1 2 3 123 2-3 22-33
和
不应该匹配0123-123 01234
。
以下正则表达式几乎起作用:
\b(0|[1-9][0-9]*\-?[0-9]*)\b
数字0 1 2 3 123 2-3 22-33和01234正确匹配,但0123-123不匹配:部分匹配。 https://regex101.com/r/0Po3Ed/1。
您可以在正则表达式中使用负面的lookbehind:
(?<!-)\b(?:0|[1-9][0-9]*(?:-[0-9]+)?)\b
如果你在数字之前有(?<!-)
,那么-
是负面的表情背叛表达,如果你的比赛失败了。