正则表达式以匹配转义字符(引号)

我想构建一个简单的正则表达式,以涵盖带引号的字符串,包括其中的所有转义引号。例如,

"This is valid"

"This is \" also \" valid"

显然,类似

"([^"]*)"

不起作用,因为它与第一个转义的引号匹配。

什么是正确的版本?

我想对于其他转义字符,答案是相同的(只需替换相应的字符)。

顺便说一句,我知道“包罗万象”的正则表达式

"(.*?)"

但我会尽量避免使用它,因为毫不奇怪,它的运行速度要比更具体的设备慢。

回答:

所有其他答案的问题是,它们只适合最初的明显测试,但不足以进行进一步审查。例如,所有答案都希望第一引号不会被转义。但最重要的是,转义比单个反斜杠要复杂得多,因为反斜杠本身可以转义。想象一下,尝试实际匹配以反斜杠结尾的字符串。那怎么可能呢?

这就是您要寻找的模式。它不假定第一个引号是有效的引号,并且它将允许转义反斜杠。

(?<!\\)(?:\\{2})*"(?:(?<!\\)(?:\\{2})*\\"|[^"])+(?<!\\)(?:\\{2})*"

以上是 正则表达式以匹配转义字符(引号) 的全部内容, 来源链接: utcz.com/qa/415440.html

回到顶部