首页 > 解决方案 > 正则表达式测验。带转义的引用文本

问题描述

测验:

验证引号中的一行。使用文本返回一个(也是唯一一个)反向引用。即:来自“引用文本”的引用文本。注意: \ 转义任何字符,因此 \" 是有效的转义。

我知道这是一个常见问题,并且已经回答了很多次,但问题是没有答案适合这个测验的正确答案。

我从简单开始(空引号是有效的,应该在反向引用中返回空值):

(?<=\s|^)"(.*?[^\\])?"(?=\s|$)

它不应该匹配“文本”与引号“。主(开始和结束)引号内只允许转义引号。您可以使用 [^”]。

尝试使用反向引用

((?<![\\])['"])((?:.(?!(?<![\\])\1))*.?)\1

您正在使用超过 1 个组。请只允许您的模式设置一个反向引用。

标签: regexpcre

解决方案


这个被测验接受了

^"([^"\\]*(?:\\.[^"\\]*)*)"$

推荐阅读