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


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

我认为它匹配,而$aaaanything = "something",它返回something(没有引号)。

但是这段代码是什么意思?

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

你似乎已经弄明白了大部分。=()都从字面上匹配这些字符。$1捕获匹配字符串的一部分,并使其作为D可用。括号内的部分匹配一个非数字字符(*?),后跟零个或多个(.)非换行字符("),直到*"也会匹配0次或多次,但更喜欢匹配更多的字符,所以最终会匹配到字符串中的最后一个*?,而不是像D那样匹配下一个。

所有这些都在perlre中有记录。

等号和引号是按字面意思理解的,.*?表示任何非数字,CC_17后面跟着或不跟着任何类型的零个或多个字符。

从左到右:

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

最新更新