【问题标题】:Regex match unescaped quotes正则表达式匹配未转义的引号
【发布时间】:2014-06-13 16:12:09
【问题描述】:

我正在寻找一个匹配任意字符串中未转义引号的正则表达式,但不是已经转义的引号,因此我可以转义未转义的引号。我尝试修改找到的任何类似解决方案,但没有找到我真正需要的解决方案。

正则表达式应该

abc"asd # match
abc\"asd # not match
abc\\"asd # match
abc\\\"asd # not match
abc\\\\"asd # match

所以基本上匹配前面有偶数个反斜杠(包括零)的任何引号,但不匹配前面有奇数个反斜杠的任何引号。

谁能帮忙?

PS:我想在 ruby​​ 中做到这一点

【问题讨论】:

    标签: ruby regex


    【解决方案1】:

    你可以用这个:

    (?<!\\)(?:\\{2})*\K"
    

    (?&lt;!\\) 检查前面没有反斜杠(负向回看)

    (?:\\{2})* 匹配所有偶数个反斜杠

    \K 从匹配结果中删除左侧的所有内容(此处为反斜杠)

    【讨论】:

    • 解释每个部分的作用可能会对 OP 和未来的读者有所帮助。
    【解决方案2】:

    看来您可能正在寻找这样的东西:

    (\\\\)*"
    

    【讨论】:

    • 这将匹配任何",因为反斜杠是完全可选的。所以not\"thisone中的"会匹配。
    猜你喜欢
    • 2020-02-19
    • 1970-01-01
    • 2011-09-25
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多