正则表达式匹配逗号和句点,除非数字包围

时间:2018-04-20 03:23:43

标签: java regex

我有正则表达式:

[^\w-,.]|((?<!\d)[,.]

匹配所有非[\w-,.]或使用否定的lookbehind匹配任何前面没有数字的逗号或句点。

使用兼容java的正则表达式,我需要捕获:

  • [^\w,.]
  • ,除非先后跟\d
    • (例如,1,2,3没有捕获但[\s,]中捕获1, 2, 3
  • .除非先后跟\d
    • (例如,12.32没有捕获,但23.捕获

我的正则表达式让我很接近,但是,我无法捕捉以下示例中的逗号和句点:

  • 1.a(需要捕捉期间)
  • 32, foo(需要捕获逗号和空格)
  • 1.1.(需要捕捉最后一段时间)

以下示例说明了要匹配的工作字符串和非工作字符串的示例。

https://regex101.com/r/pWcwXa/2

1 个答案:

答案 0 :(得分:1)

这个怎么样?

[^\w-,.]|((?<!\d)[,.]|[,.](?!\d))

Demo ,,,我稍微更改了你的正则表达式,只添加not followed by a digit

的情况