【发布时间】:2014-03-05 21:44:57
【问题描述】:
我有一个关于正则表达式的基本问题。
我使用表达式 .* 而不考虑它匹配期望匹配例如直到行尾。这行得通。
但出于某种原因,我开始思考这个表达方式。检查Wikipedia(我的重点)
. Matches any single character
* Matches the **preceding** element zero or more times
那么现在根据这个定义,.* 为什么不尝试匹配字符串中的 first 字符 0 次或更多次,而是尝试将匹配应用到 each 字符串中的字符?
我的意思是如果我有abc,它应该尝试匹配a,aa,aaa etc,对吗?
但它没有:
~
$ perl -e '
> my $var="abcdefg";
> $var =~ /(.*)/;
> print "$1\n";'
abcdefg
【问题讨论】:
-
我不确定是否有比以下更好的答案:不,因为它不是这样定义的。
-
@OliCharlesworth:维基百科的定义似乎与我的假设(或混淆)并不矛盾
-
我的意思是,您对
.*的含义的假设与定义不符。