匹配空字符串与正则表达式

gen*_*sys 6 regex

我在stackoverflow上看过这里的帖子,说正则表达式^$会匹配一个空字符串...所以它让我思考......为什么不是这样的:^\s+$- 这不也有效吗?我知道这更像打字,但在我看来,它也更有意义.我之前没有使用过很多正则表达式,但似乎随着时间的推移我对它们的需求变得越来越大 - 所以我正在接受提示并试图学习.

ars*_*jii 14

^\s+$ - 这不也有效吗?

不匹配空字符串.通常,X+意味着X 一次或多次.因此,\s+无法匹配空字符串 - 它至少需要一个\s才能匹配.

                                     ^ \s + $
                                     | |  | |
start of string ---------------------+ |  | |
whitespace character ------------------+  | |
one or more of what precedes -------------+ |
end of string ------------------------------+

现在,X*意味着X 0次或更多次,所以^\s*$确实匹配一个空字符串.


^\s+$

在此输入图像描述

^\s*$

在此输入图像描述


Roh*_*ain 5

^\s+$将匹配一系列一个或多个空格,它根本不是空字符串。

空字符串不包含任何字符,甚至不包含空格。但是,如果您使用^\s*$,除了空格之外,它还会匹配空字符串。