我逐行迭代文件,找出以星号:*
开头的行。我的简单regexp适用于除文件第一行以外的所有行。
期望的行为是:正则表达式应该正确匹配以星号开头的行。
实际行为是:如果星号出现在文件的第一行,则regexp无法匹配。
我的调试尝试包括:
-
在文件开头添加空行。结果:以前遗漏的行,现在在文件的第二行,通过regexp正确匹配。
-
从regexp中删除
A
,只需与asterix匹配即可。文件的第一行现在正确匹配regexp。 -
尝试使用
^
而不是A
。文件的第一行仍然不匹配。
复制的最小代码:
while (<$input_fh>) {
chomp;
$line = $_;
if ($line =~ /A*/) {
...
}
}
输入文件由可能以星号开头也可能不以星号开头的文本行组成。
/A*/
匹配字符串的开头,然后匹配一个星号字符。
您需要匹配开始和星号之间的任何符号。
使用
/A.*?*/
查看验证
解释
--------------------------------------------------------------------------------
A the beginning of the string
--------------------------------------------------------------------------------
.*? any character except n (0 or more times
(matching the least amount possible))
--------------------------------------------------------------------------------
* '*'