regex - 如何将双引号字符串与转义的双引号字符匹配?

标签 regex perl escaping

我需要一个Perl正则表达式来匹配字符串。我假设仅用双引号引起来的字符串,“\”是文字引号,而不是字符串的结尾,并且“\”是文字反斜杠字符,不应转义引号字符。如果不清楚,则一些例子:

"\""    # string is 1 character long, contains dobule quote
"\\"    # string is 1 character long, contains backslash
"\\\""  # string is 2 characters long, contains backslash and double quote
"\\\\"  # string is 2 characters long, contains two backslashes

我需要一个可以将所有4种可能性以及这些可能性的所有其他简单变体识别为有效字符串的正则表达式。我现在所拥有的是:
/".*[^\\]"/

但这是不对的-除了第一个以外,它不匹配其他任何一个。谁能在正确的方向上 push 我前进?

最佳答案

这个怎么样?

/"([^\\"]|\\\\|\\")*"/

匹配零个或多个不是斜杠或引号的字符,或者两个斜杠或一个斜杠再加上一个引号

关于regex - 如何将双引号字符串与转义的双引号字符匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/481282/

相关文章:

perl - 如何使用值搜索哈希并在 Perl 中成功时返回相应的键

regex - ",(?!.*\\))"在 R 中返回 "Invalid Regex"错误

javascript - CKEditor 和转义元素

javascript - 将换行符之间的文本替换为 <p></p> 和 <b></b>

java - 解析一行数据: split vs regex

linux - 如何在 RHEL 7.7 Docker 容器中安装 Perl 5.30

regex - 在perl中捕获两个不同正则表达式的匹配内容

powershell - (PowerShell) 使用转义的分隔符分割字符串

正则表达式用于以括号内等号结尾的字符串?

java - 正则表达式忽略不同行上两个字符之间的字符