匹配引号外的正则表达式实例:另一种方法
在上一个问题中,建议匹配引号之外的正则表达式的所有实例报价是不可能的。然而,这并不完全准确。
此问题的解决方案在于,如果一个单词后面有偶数个引号,则该单词位于引号之外。这可以建模为前瞻断言:
\+(?=([^"]*"[^"]*")*[^"]*$)
但是,这并不能解释转义引号。为了处理这个问题,如果在引号之前遇到反斜杠,则修改表达式以忽略下一个字符:
\+(?=([^"\]*(\.|"([^"\]*\.)*[^"\]*"))*[^"]*$)
这个复杂的表达式确保不在引号内的正则表达式的所有实例都匹配,即使在存在转义引号。
.split() 和 .replace() 方法的通用替代方法
虽然此正则表达式解决方案效果很好,但可能并不适合所有人情况下,特别是在使用 .split() 和 .replace() 方法时。另一种方法是使用以下步骤:
这种方法更加灵活,可以在更广泛的场景中使用。
以上是如何匹配引号之外的正则表达式实例,即使有转义引号?的详细内容。更多信息请关注PHP中文网其他相关文章!