正则表达式:向前看,向后看,检查.(点)用作小数和句号



我已经在网上寻找了一个答案,但似乎不能让它工作。

我开发了以下正则表达式:

    (?<![^d][\])[.](?![d])

目标是识别任何'。

未转义的'(点)或十进制数的一部分。

ie)

  • abc.co。,两个点应该匹配
  • ab0.co。,两个点应该匹配
  • abc.0。,两个点应该匹配
  • abc .co
  • 。uk,只有第二个点匹配
  • 0.00,点不匹配
  • abc0.0。uk,第一个点不匹配(这是可接受的结果),第二个点应该

目前它适用于以上所有情况,除了:

  • abc.0。,两个点应该匹配

任何想法吗?看起来向后看工作正常,但是向前看不是。

我相信这对任何正则表达式大师来说都是一个简单的问题!

供参考。我正在。net 4中开发这个

试试这个

(?<![\d]).(?=d)|(?<=[^D\]).(?!d)|(?<=[^d\]).(?!d)

在Regexr上查看

我把它分成三步。

  1. 如果前面不是转义字符也不是数字,后面是数字,则匹配

  2. 如果前面不是转义字符且后面不是数字则匹配

  3. 如果前面不是转义字符且不是数字且后面不是数字则匹配

将任务除以2。首先检查字符串是否为数字[^.d]。第二步,从没有转义符号的点中选择。这种方法要简单得多。

Regex from other answer不涵盖所有情况

最新更新