这个Perl while循环是什么意思?

时间:2014-05-11 13:02:42

标签: perl match

while ($aaa =~ m/= "(\D.*?)"/g) 

我认为匹配时$aaaanything = "something"匹配,但它返回something(不带引号)。

但这段代码意味着什么?

m/= "(\D.*?)"/

2 个答案:

答案 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