我正在寻找一个正则表达式,它将检查字符串中的分隔符是否使用反斜杠进行转义。
我关注的分隔符是逗号(\,),冒号(\ :),分号(\;),当然反向斜杠本身必须转义(\)。
例如,字符串“test”应返回匹配项,因为其中没有分隔符,并且不需要转义。字符串“te \; st”将返回匹配,因为分号分隔符已转义。 “te; st”和“t \; s:t”都会失败,因为两者都包含至少一个未转义的分隔符。
我知道我需要有条件和积极的看法,这是我到目前为止所做的,但它没有给我预期的答案。
^(?<delimiter>[:;,\\])?(?(delimiter)\(?<=(?:\\\\)*\\)k<delimiter>|.)$
关于如何使这项工作的任何建议?
感谢。
答案 0 :(得分:6)
^(?:[^,:;\\]|\\.)*$
^ # beginning of string
(?: )* # 0 or more of:
[^,:;\\] # a normal (non-delimiter) character
| # or:
\\. # an escaped character (backslash + any)
$ # end of string
也就是说,每个字符串都必须是转义字符或非分隔字符。