【问题标题】:Regex - Match string between quotes (") but do not match (\") before the string正则表达式 - 在引号 (") 之间匹配字符串,但在字符串之前不匹配 (\")
【发布时间】:2012-09-12 04:14:49
【问题描述】:

我需要匹配引号中的字符串,但要确保第一个引号没有被转义。

例如:第一个 \"string\" 是 "Hello \"World\"!"
应该只匹配 Hello \"World\"!

我正在尝试修改(")(?:(?=(\\?))\2.)*?"

我尝试将[^\\"] 添加到("),这有点工作,但它只匹配 (") 或所有其他不是 (\") 的字母,我想不出修改的方法([\\"]") 只匹配 (") 如果不是 (\")

这是我目前所拥有的([^\\"]")(?:(?=(\\?))\2.)*?"

我一直在尝试使用这两个页面来弄清楚,但仍然无法得到它。
Can Regex be used for this particular string manipulation?
RegEx: Grabbing values between quotation marks

谢谢

【问题讨论】:

    标签: regex


    【解决方案1】:

    你可以像这样在后面使用否定的外观:

    (?<!\\)"(.*?)(?<!\\)"
    

    查看实际情况here on regex101

    第一个匹配组包含:

    Hello \"World\"!
    

    【讨论】:

    • 但是,如果您有多个 inline 字符串,则此表达式将不起作用。
    • 如果有这样的字符串,这将不起作用:"ended by backslash\\"。它需要检查前面是否有奇数个反斜杠。
    • @Porges 喜欢三重嵌套值还是什么?据我所知,正则表达式不可能进行那种(动态)匹配!? - 此外,我会考虑是否使用正确的数据结构:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多