在正则表达式中转义反斜杠[\\]的正确方法?
出于好奇,我试图找出哪一种是在PHP正则表达式模式中使用反斜杠的正确方法:
$pattern = "/^[\\\]{1,}$/";$string = '\\';
// ----- RETURNS A MATCH -----
$pattern = "/^[\\\\]{1,}$/";$string = '\\';
// ----- ALSO RETURNS A MATCH -----
根据下面的文章,4应该是正确的方法,但令我困惑的是两个测试都返回了一个匹配项。如果两者都正确,那么4是首选方式吗?
回答:
事实是,您正在使用字符类,[]
因此无论嵌入多少文字反斜杠都无关紧要,它将被视为单个反斜杠。
例如以下两个正则表达式:
/[a]//[aa]/
就正则表达式引擎而言,其所有意图和目的都是相同的。字符类采用一个字符列表,然后将它们“折叠”下来以匹配单个字符,并遵循“对于正在考虑的当前字符,是否是[]
?中列出的任何字符”这一行。如果您在类中列出了两个反斜杠,那么它将是“字符是一个反斜杠还是一个反斜杠?”。
以上是 在正则表达式中转义反斜杠[\\]的正确方法? 的全部内容, 来源链接: utcz.com/qa/434651.html