"^\\\\d{1,2}$"
我有上述正则表达式。我知道字符串解析器会删除两个反斜杠,留下 \\d
。为元字符取一个,多余的 \
有什么作用?我以前没有正则表达式的经验。或者这个字符串模式本身就是 [反斜杠][最多两位整数]。我有什么遗漏吗?
最初的回答:
这个正则表达式匹配一个以一个或两个数字开头和结尾的字符串。双反斜杠 \\\\
是用来转义一个反斜杠,因为反斜杠在正则表达式中也是一个特殊字符。
"^\\\\d{1,2}$"
我有上述正则表达式。我知道字符串解析器会删除两个反斜杠,留下 \\d
。为元字符取一个,多余的 \
有什么作用?我以前没有正则表达式的经验。或者这个字符串模式本身就是 [反斜杠][最多两位整数]。我有什么遗漏吗?
最初的回答:
这个正则表达式匹配一个以一个或两个数字开头和结尾的字符串。双反斜杠 \\\\
是用来转义一个反斜杠,因为反斜杠在正则表达式中也是一个特殊字符。
反斜杠可以转义其他反斜杠,以及特殊字符。
你所拥有的是:
\d
是你的正则表达式引擎中的“数字”。\\d
是反斜杠转义反斜杠 + d,在你的字符串引用机制中等同于 \d。\\\\d
是反斜杠转义反斜杠两次,加上 d,如果你在使用 shell 或者必须通过 system
或 rsh
之类的方式传递字符串,则可能需要转义命令行。需要转义\
,这样您的字符串文字才能将其表示为数据,然后再将其转换为正则表达式。
首先,^\\
表示以\
开头的模式,\\d{1,2}
表示数字(\d)应出现1到2次。这就是为什么有四个反斜杠的原因。
匹配情况:
\12
\1
.......