while ($aaa =~ m/= "(\D.*?)"/g)
我认为匹配时$aaa
与anything = "something"
匹配,但它返回something
(不带引号)。
但这段代码意味着什么?
m/= "(\D.*?)"/
答案 0 :(得分:1)
等号和引号按字面意思,\D
表示任何非数字,.*?
后跟或不是0或更多字符。
从左到右:
m/= "(\D.*?)"/g
match operator,
start regex:
equals sign, whitespace, double quotation mark,
start group:
one non-digit character, zero or more characters,
end group,
double quotation mark,
end regex
match globally
答案 1 :(得分:1)
你好像已经弄明白了。 =
,和
"
完全匹配这些字符。 ()
捕获匹配字符串的一部分,并将其作为$1
使用。括号内的部分与非数字字符(\D
)匹配,后跟零个或多个(*?
)非换行符(.
),直到"
。 *
也会匹配零次或多次,但更喜欢匹配更多字符,因此最终会匹配到字符串中的最后一个"
而不是下一个*?
。{ / p>
所有这些都记录在perlre。
中