当前位置: 首页 > 面试题库 >

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

牟慎之
2023-03-14
问题内容

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

"This is valid"
"This is \" also \" valid"

显然,类似

"([^"]*)"

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

什么是正确的版本?

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

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

"(.*?)"

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


问题答案:

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

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

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


 类似资料:
  • 问题内容: 什么正则表达式将匹配Java中的任何ASCII字符? 我已经尝试过: 但是发现它与我想要的很多东西都不匹配(例如空格,括号等)。我希望避免以如下格式显式列出所有127个ASCII字符: 问题答案: 我没用过但是我用过

  • 我想解析以下字符串: 我正在使用,所以我这里缺少的是正确的正则表达式。规则是正则表达式必须: 隔离任何单个单词 任何用双引号括起来的子字符串都是匹配的 单词中的双引号必须忽略(稍后我将用空格替换它们)。 因此,结果匹配应该是: < li>w1 w"2 < li>w3 < li>| < li>w4 < li>w"5 < li>w6 w7 双引号是否包含在双引号括起来的子字符串中是无关紧要的(例如,1

  • 问题内容: 我正在尝试创建一个匹配字符串的正则表达式,如果它连续有3个或多个重复字符(例如aaaaaa,testtttttt,otttttter)。 我尝试了以下方法: 连续 匹配 任意 3个字符,但不 连续的 字符…我在哪里出错? 问题答案: 您要的内容无法使用 真正的 正则表达式完成,您需要的是(不规则的)反向引用。尽管许多正则表达式引擎实现了它们,但Go使用的RE2却没有。RE2是一种快速的

  • 问题内容: 当匹配某些字符(例如换行符)时,可以使用正则表达式“ \\ n”或仅使用“ \ n”。例如,以下将字符串拆分为行数组: 但是以下内容同样适用: 我的问题: 上面两个是 完全 一样地工作,还是有细微的差别?如果是后者,能否举个例子,说明您得到不同的结果? 还是仅在[可能/理论]表现上有所不同? 问题答案: 在当前情况下没有区别。通常的字符串转义序列是在单个反斜杠的帮助下形成的,然后有效的

  • 问题内容: 我在尝试将我的javascript regex经验转移到Python时遇到了麻烦。 我只是想让它工作: …但是它打印无。如果我做: 它匹配…默认情况下是否匹配字符串的开头?当匹配时,如何使用结果? 我如何进行第一场比赛?是否有比python网站提供的文档更好的文档? 问题答案: 隐式添加到您的正则表达式的开头。换句话说,它仅在字符串的开头匹配。 将在所有位置重试。 一般来说,建议您在需

  • 问题内容: 我在用Python将字符串中的数字匹配时遇到麻烦。尽管应该明确匹配,但甚至不匹配 或仅匹配。我的监督在哪里? 问题答案: 阅读文档:http : //docs.python.org/2/library/re.html#re.match 如果在零个或多个字符 开头 的 字符串 您要使用(或)