正则表达式匹配某些字符前的空格,但有一些例外

Regex to match white spaces before certain characters with some exceptions

我有这个正则表达式 ([ ][,.!?;:]) 来检查字符串是否在某些标点符号 (,.!;:) 之前有白色 space。它工作得很好,但我需要一个冒号 (:) 标记的例外。只要冒号后面的字符不是斜杠 (/),我就想要一个匹配项。

您可以使用

([ ](?:[,.!?;]|:(?!\/)))

或者,

(?! :\/)( [,.!?;:])

参见regex demo #1 and regex demo #2

详情:

  • [ ] - a space(注意括号在这里没有用,除非你有自由间距模式(而不是 Java)
  • (?:[,.!?;]|:(?!\/)) - 两者之一
    • [,.!?;] - 集合中的一个字符
    • | - 或
    • :(?!\/) - 冒号后面没有紧跟斜杠。

正则表达式 #2 详细信息

  • (?! :\/) - 如果有一个 space,然后是一个冒号,然后是紧邻当前位置 [=44] 右侧的 /,则匹配失败的否定前瞻=]
  • ( [,.!?;:]) - 第 1 组:一个 space 然后是集合中的一个字符。