在以下表达式中:
if (($$_ =~ /^.+:\s*\#\s*abcd\s+XYZ/)
答案 0 :(得分:2)
你有最后一个“一个或多个”和“零个或多个”与正则表达式实际上相反的方式。
$$_
取消引用$_
中的标量引用。
答案 1 :(得分:1)
关于2.,你对正则表达式的解释并不完全正确。
/^.+:\s*#\s*abcd\s+XYZ/
表示一个或多个字符(从字符串的开头开始)后跟冒号,后跟零个或多个空格字符,后跟一个哈希字符,后跟零个或多个空格字符,后跟'abcd',后跟一个或多个空格字符,后跟'XYZ'。
答案 2 :(得分:1)
至于pt。 2:强>
以(^
)开头的一行或多行(.+
),冒号(:
),零个或多个空白字符(\s*
),一个哈希( \#
),零个或多个空白字符(\s*
),字符串“abcd”(abcd
),一个或多个空白字符(\s+
),然后是字符串“XYZ”(XYZ
)。
(强调增加了差异。)请注意,行尾($
)没有锚点,因此这仅涉及开头。
答案 3 :(得分:0)
以下是你的正则表达式的给出解释:
Token Meaning
^ Matches beginning of input. If the multiline flag is set to true,
also matches immediately after a line break character.
.+ Matches any single character except newline characters.
The + quantifier causes this item to be matched 1 or more times (greedy).
: :
\s* Matches a single white space character.
The * quantifier causes this item to be matched 0 or more times (greedy).
\# #
\s* Matches a single white space character.
The * quantifier causes this item to be matched 0 or more times (greedy).
abcd abcd
\s+ Matches a single white space character.
The + quantifier causes this item to be matched 1 or more times (greedy).
XYZ XYZ