如何用转义符将双引号中的字符串匹配?

时间:2018-07-13 14:33:31

标签: .net json regex string

我很确定,使用正则表达式无法做到这一点,但是也许你们当中的一个人知道的更好。
到目前为止,这是我的模式:

^\[\s*"[^\n]+?(?<!\\)"(?:,\s*"[^\n]+?(?<!\\)")*\s*\]

(采用.NET语法,(?:)是一个非捕获组,
(?<!)是对该组的负面评价)

它用于json字符串数组,因此在这里我必须注意转义的双引号。 (?<!\\)"
我的问题是,我的模式与以下示例字符串匹配:

["", ""]

还有

["1"", "2"]

我知道为什么:
[^\n]+?具有结尾的非贪婪符号,但在第一个示例字符串中捕获了未转义的结束双引号以匹配"[^\n]+?(?<!\\)",在第二个示例字符串中捕获了另一组,\s*"[^\n]+?(?<!\\)"

我需要的是一个正则表达式,无论下一个出现什么,它总是在第一个收尾未转义的双引号处停止。

所以我认为对于正则表达式而言,它太含糊了。

1 个答案:

答案 0 :(得分:1)

这可能会做到

true

documentation

(?s)^\[\s*"[^"\\]*(?:\\.[^"\\]*)*"(?:\s*,\s*"[^"\\]*(?:\\.[^"\\]*)*")*\s*\]