我对正则表达式有点新意,具体来说,我不明白有2个反斜杠?我的意思是,我知道第二个是逃避角色" *",但第一个反斜杠的作用是什么?
我将这个正则表达式传递给php函数preg_match(),我试图找到包含2个或更多个连续" *"的字符串。
答案 0 :(得分:1)
它是一个用程序编写的字符串文字,如果是,那是哪一个?双反斜杠可能是为了逃避转义字符,以便此正则表达式匹配至少2个*
个明星字符。
在JavaScript中,您需要转义\
,以便在使用RegExp
构造函数将字符串文字转换为正则表达式之前,您的字符串文字可以将其表示为数据。 Why do regex constructors need to be double escaped?
答案 1 :(得分:1)
正则表达式是无效的语法。
你有这件作品:
*{2,}
基本上会读到:match n-times, 2 or more times
。
以下正则表达式:
/\\*.{2,}/
最简单,最接近的正则表达式是你所拥有的正则表达式,它的内容如下:
match 0 or more '\' and 2 or more characters that aren't newlines
如果你在谈论字符串本身,可能会被解释为两件事:
/\\*{2,}/
match a single \ and another \ n-times 2 times or more
/\*{2,}\
match 2 or more *
这是有效的语法这一切都有所不同,具体取决于转义字符。
由于问题已更新以显示正在使用的语言和引擎,我已更新以添加以下信息:
您必须将正则结果作为'/\*{2,}/'
或传递为"/\\*{2,}/"
(注意引号)。
两者非常相似,只是单引号(''
)仅支持以下转义序列:
\'
- 制作'
\\
- 制作\
在PHP中,双引号字符串的处理方式不同。它们几乎支持任何转义序列,例如:
\"
- 制作"
\'
- 制作'
\\
- 制作\
\x<2-digit hex number>
- 与chr(0x<2-digit hex number>)
\0
- 生成null
字符\1
- 生成一个控件字符(与chr(1)
相同)\u<4-digit hex number>
- 生成UTF-8字符\r
- 在旧OSX上生成换行符\n
- 在Linux /更新的OSX / Windows上生成换行符(在没有b
的情况下写入文件时)\t
- 制作标签\<number>
或\0<number>
- 与\x
相同,但数字为八进制(例如:"\75"
和"\075"
生成=
) \<anything>
- 制作<anything>
答案 2 :(得分:1)
根据您使用的版块,"/\\*{2,}/"
实际上可能是/\*{2,'}/
字符串的表示 - 这是因为Java等语言将\
视为转义字符,所以要真正将该字符放在正则表达式中,你需要转义正则表达式字符串中的字符。
所以,我们有/\*{2'}/
正则表达式。 \*' matches the star character, and
{2,}}表示至少两次。你的正则表达式将匹配任何两个或多个连续的明星字符。
答案 3 :(得分:0)
对于 PHP ,您使用该正则表达式的方法是重复*
2次或更多次。您可以使用下图轻松查看:
但是当你必须在PHP中编写代码时,你必须转义反斜杠(使用反斜杠)才能在字符串中使用它。例如:
$re = "/\\*{2,}/";
$str = "...";
preg_match($re, $str, $matches);