1

我正在寻找一个正则表达式,它将检查字符串中的分隔符是否用反斜杠转义。

我关心的分隔符是逗号 (\,)、冒号 (\:)、分号 (\;),当然反斜杠本身必须转义 (\)。

例如,字符串“test”应该返回匹配项,因为其中没有分隔符,也不需要转义。字符串 "te\;st" 将返回匹配项,因为分号分隔符被转义。"te;st" 和 "t\;s:t" 都会失败,因为两者都包含至少一个未转义的分隔符。

我知道我需要一个有条件的和积极的看法,这就是我到目前为止所拥有的,但这并没有给我预期的答案。

^(?<delimiter>[:;,\\])?(?(delimiter)\(?<=(?:\\\\)*\\)k<delimiter>|.)$

关于如何完成这项工作的任何建议?

谢谢。

4

1 回答 1

6
^(?:[^,:;\\]|\\.)*$

^           # beginning of string
(?:  )*     # 0 or more of:
  [^,:;\\]  #  a normal (non-delimiter) character
|           # or:
  \\.       #  an escaped character (backslash + any)
$           # end of string

也就是说,字符串的每一部分都必须是转义字符或非定界字符。

于 2012-12-02T05:06:05.203 回答