为什么这段代码打印51而不是26?我正试图提取"价值观".这就是我想要的(大胆的):<option value =" Andaman&Nicobar "> Andaman&Nicobar </ option>
根据定义m在列表上下文中使用g运算符应该在parantheses中返回模式?
my $firstpage=<<'EOF';
<option value="Andaman & Nicobar">Andaman & Nicobar</option>
<option value="Andhra Pradesh">Andhra Pradesh</option>
<option value="Assam">Assam</option>
<option value="Bihar">Bihar</option>
<option value="Calcutta Telecom District">Calcutta Telecom District</option>
<option value="Chennai Telecom District">Chennai Telecom District</option>
<option value="Chhattisgarh">Chhattisgarh</option>
<option value="Gujarat">Gujarat</option>
<option value="Haryana">Haryana</option>
<option value="Himachal Pradesh">Himachal Pradesh</option>
<option value="Jammu & Kashmir">Jammu & Kashmir</option>
<option value="Jharkhand">Jharkhand</option>
<option value="Karnataka">Karnataka</option>
<option value="Kerala">Kerala</option>
<option value="Madhya Pradesh">Madhya Pradesh</option>
<option value="Maharashtra">Maharashtra</option>
<option value="North East I">North East I</option>
<option value="North East II">North East II</option>
<option value="Orissa">Orissa</option>
<option value="Punjab">Punjab</option>
<option value="Rajasthan">Rajasthan</option>
<option value="Tamilnadu">Tamilnadu</option>
<option value="UP East">UP East</option>
<option value="UP West">UP West</option>
<option value="Uttaranchal">Uttaranchal</option>
<option value="West Bengal">West Bengal</option>
EOF
my @cities=$firstpage=~m{(?<=")([^"]*)(?=")}gs;
print scalar @cities;
Run Code Online (Sandbox Code Playgroud)
每个/ g匹配从前一个停止的地方开始,但由于你使用零宽度断言,你实际上并没有消耗".所以
">Andaman & Nicobar</option>
<option value="
Run Code Online (Sandbox Code Playgroud)
被认为也是一场比赛.
做:
my @cities = $firstpage =~ m/"([^"]*)"/gs;
Run Code Online (Sandbox Code Playgroud)
代替.请注意,如果存在捕获括号,则只有在列表上下文中成功时m // g才会返回这些内容.
| 归档时间: |
|
| 查看次数: |
233 次 |
| 最近记录: |