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

在正则表达式中转义反斜杠[\\]的正确方法?

毛景曜
2023-03-14
问题内容

出于好奇,我试图找出哪一种是在PHP正则表达式模式中使用反斜杠的正确方法:

测试01:(3个反斜线)

$pattern = "/^[\\\]{1,}$/";
$string = '\\';

// ----- RETURNS A MATCH -----

测试02:(4个反斜线)

$pattern = "/^[\\\\]{1,}$/";
$string = '\\';

// ----- ALSO RETURNS A MATCH -----

根据下面的文章,4应该是正确的方法,但令我困惑的是两个测试都返回了一个匹配项。如果两者都正确,那么4是首选方式吗?


问题答案:

事实是,您正在使用字符类,[]因此无论嵌入多少文字反斜杠都无关紧要,它将被视为单个反斜杠。

例如以下两个正则表达式:

/[a]/
/[aa]/

就正则表达式引擎而言,其所有意图和目的都是相同的。字符类采用一个字符列表,然后将它们“折叠”下来以匹配单个字符,并遵循“对于正在考虑的当前字符,是否是[]?中列出的任何字符”这一行。如果您在类中列出了两个反斜杠,那么它将是“字符是一个反斜杠还是一个反斜杠?”。



 类似资料:
  • 问题内容: 我想构建一个JS函数,将一个参数列表隐藏到有效路径中(因为我不确定路径的一部分是否带有斜杠) 这是功能: 使用的RegEx匹配了http://regexpal.com上的所有开始和结束斜杠和反斜杠,但是该功能无法正常工作(RegEx不匹配)。此外,Chrome指出 语法错误:无效的正则表达式:/()$ | ^()/:未终止的组 当我只使用RegEx 但是,使用RegEx 提前致谢! 狮

  • 我正在尝试用单个反斜杠替换所有双反斜杠。我想将替换为。我以为python将视为一个反斜杠,将视为带有两个反斜杠的字符串。但是当我尝试时 因此,我尝试用原始字符串切换替换字符串: 这不是我需要的。所以我只尝试了原始字符串中的一个反斜杠:

  • 问题内容: 为了匹配文字上的反斜杠,许多人和PHP手册都说:总是这样对它进行三倍转义 注意事项 : 单引号和双引号的PHP字符串具有反斜杠的特殊含义。因此,如果\必须与正则表达式匹配,则必须在PHP代码中使用或。 这是一个示例字符串: 结论 : 如果模式是单引号,则必须将双反斜杠转义以匹配文字\ 如果模式被双引号引起,则取决于反冲是否在字符类内部,在该字符级中必须至少将其两次转义,而必须将 其三倍

  • 问题内容: 我没有JavaScript方面的丰富经验,但是我正在尝试创建一个标记系统,而不是使用or ,而是使用。 我该如何使用而不是。我尝试做并添加,但是失败了。 问题答案: 您可以这样逃避它。 或只使用indexOf

  • 问题内容: 我对正则表达式中的反斜杠感到困惑。在正则表达式中,a具有特殊含义,例如表示十进制数字。如果在反斜杠前面添加反斜杠,则该特殊含义会丢失。在正则表达式中,可以阅读: 也许最重要的元字符是反斜杠。与Python字符串文字一样,反斜杠后可以跟各种字符,以表示各种特殊序列。它也用于转义所有元字符,因此您仍可以按模式匹配它们。例如,如果您需要匹配或,则可以在它们前面加上反斜杠以删除其特殊含义:或。

  • 昨天,我需要向正则表达式添加一个文件路径,创建一个如下所示的模式: 一开始正则表达式不匹配,因为包含几个正则表达式特定的符号,如 或 。作为快速修复,我将它们替换为 和 . 与 . 然而,我问自己,是否没有一种更可靠或更好的方法来清除正则表达式特定符号中的字符串。 Python 标准库中是否支持此类功能? 如果没有,您是否知道一个正则表达式来识别所有正则表达式并通过替代品清理它们?