我正在学习正则表达式并看到了我无法完全理解的这段代码。我知道它的作用,因为它被解释为here
我知道插入符号,^
用于匹配字符串的开头。
我知道美元符号$
用于匹配字符串的结尾。
/^$/
如何匹配空字符串?在我的脑海里,它说,"匹配字符串的开头和结尾。"当然,每个字符串都有一个开头和一个结尾。在哪里,"空虚"进来?
答案 0 :(得分:2)
/^$/
如何匹配空字符串
^
与开头
$
匹配字符串的结尾。
由于两个锚点之间没有任何内容,因此字符串为空
示例:http://regex101.com/r/kK9aW2/1
注意强>
当我们写一个正则表达式/ab/
与a
匹配,并紧跟b
这并不意味着它匹配字符串中的a
或b
。这意味着它匹配字符串
ab
这是正则表达式匹配abc
而不是acb
答案 1 :(得分:0)
您缺少的是序列的概念。
从左到右阅读你的正则表达式:它的真正含义不是“匹配字符串的开头和结尾”,而是“匹配字符串的开头,然后结束字符串“。
由于中间没有任何内容,此正则表达式只能接受(=匹配)空字符串。
答案 2 :(得分:0)
$
可以在换行符之前匹配字符串 OR 的结尾。
Perl中的示例:"\n" =~ /^$/
也匹配,但字符串显然不是空的
在这种情况下,它在换行符之前匹配(最后换行符在单行模式下),因为
正则表达式不允许匹配^和$之间的任何内容。
以下是一些值得注意的示例和事项。
** String containing single newline \n ..
"\n" =~ /(^$)/ -- matches, $1=''
"\n" =~ /(^\n$)/ -- matches, $1='\n'
"\n" =~ /(^$)(.\z))/s -- matches, $1='', $2='\n'
** Real empty string ..
"" =~ /(^$)/ -- matches, $1=''
"" =~ /(^\z)/ -- matches, $1=''