正则表达式:要求在字符串中转义引号

Bun*_*ung 6 regex

谢谢你的期待,

我有一段非常糟糕的时间试图为这个正则表达式问题找到正确的搜索条件.我需要确保引号已经在字符串中转义,否则匹配应该失败.(这类问题的大多数搜索结果只是说你需要逃避引号或如何逃避引号.)

有效:

This is valid
This \"is Valid
This is al\"so Valid\"
Run Code Online (Sandbox Code Playgroud)

无效:

This i"s invalid
This i"s inv"alid
Run Code Online (Sandbox Code Playgroud)

到目前为止,我唯一能找到的是

((?:\\"|[^"])*)
Run Code Online (Sandbox Code Playgroud)

这似乎与以下的第一部分匹配,但在转义引用后没有任何内容

This is a \"test
Run Code Online (Sandbox Code Playgroud)

再次,这应该失败:

This is a \"test of " the emergency broadcast system
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助,我希望这是可能的.

ade*_*hus 6

在C#中,这似乎可以按您的方式工作:

string pattern = "^([^\"\\\\]*(\\\\.)?)*$";
Run Code Online (Sandbox Code Playgroud)

剥离逃逸离开你:

^([^"\\]*(\\.)?)*$
Run Code Online (Sandbox Code Playgroud)

大致转换为:字符串开头,(多字符 - 排除 - 引用 - 或反斜杠,可选 - 反斜杠 - 任意) - 重复,字符串结束

它是字符串的开头和字符串结束标记,它强制匹配整个文本.

  • 是的,它设计为在最后一个反斜杠的情况下失败.原因是如果字符串使用反斜杠支持转义字符,则单个反斜杠永远不会有效. (2认同)