Php 仅当不在引号之间时才匹配给定序列,并考虑转义引号
我使用下面的正则表达式来匹配给定的字符序列,如果它没有被引号包围——也就是说,如果它后面有偶数个引号(使用正向前瞻),直到字符串结束 如果单词Php 仅当不在引号之间时才匹配给定序列,并考虑转义引号,php,regex,pcre,Php,Regex,Pcre,我使用下面的正则表达式来匹配给定的字符序列,如果它没有被引号包围——也就是说,如果它后面有偶数个引号(使用正向前瞻),直到字符串结束 如果单词部分在引号之间为而非,则说我想匹配该单词: \bsection\b(?=[^"]*(?:"[^"]*"[^"]*)*$) 我如何扩展它以考虑转义引号?也就是说,如果我在链接示例中的引号之间插入一个\“,结果将保持不变。使用pcre可以将引用的内容: (?s)".*?(?<!\\)"(*SKIP)(*F)|\bsection\b 请参阅。@vks
部分
在引号之间为而非,则说我想匹配该单词:
\bsection\b(?=[^"]*(?:"[^"]*"[^"]*)*$)
我如何扩展它以考虑转义引号?也就是说,如果我在链接示例中的引号之间插入一个\“
,结果将保持不变。使用pcre可以将引用的内容:
(?s)".*?(?<!\\)"(*SKIP)(*F)|\bsection\b
请参阅。@vks,这是我正在处理的一个PHP项目。标记现在添加到问题中。@vks是的,不幸的是,可能会发生这种情况。我也想到了同样的情况,但可能会有多个“\”,然后我们不知道是否必须忽略所有或仅忽略奇数:p
$pattern = '/".*?(?<!\\\)"(*SKIP)(*F)|\bsection\b/s';