我正在尝试使用Perl搜索html文件,查找半随机字符串并将匹配存储在变量中或打印出来。
字符串是jpg图像的名称,并且始终遵循9位数字的模式,后跟6个小写字母,即
140005917smpxgj.jpg
但每次都是随机的。我相信Perl可以做到这一点,但我承认我有点困惑。
答案 0 :(得分:3)
不太复杂。您可能需要注意扩展程序中的不同上限,例如JPG
。如果这是一个问题,您可以在扩展名之前添加(?i)
。
您可能还希望阻止部分名称,例如:丢弃超过9位的匹配项。这是(?<!\d)
部分:确保匹配前没有数字字符。
ETA:现在也提取多个匹配,感谢ikegami。
while (<>) {
for (/(?<!\d)([0-9]{9}[a-z]{6}\.(?i)jpg)/g) {
say;
push @match, $_;
}
}
答案 1 :(得分:2)
试试这个正则表达式:
/\b\d{9}[a-z]{6}\.jpg/
答案 2 :(得分:1)
解决方案正则表达式为\d{9}[a-z]{6}\.jpg
答案 3 :(得分:1)
use warnings;
use strict;
while (<DATA>) {
if (/ ( [0-9]{9} [a-z]{6} [.] jpg ) /x) {
print "$1\n";
}
}
__DATA__
foo 140005917smpxgj.jpg bar
sdfads 777666999abcdef.jpg dfgffgh
打印:
140005917smpxgj.jpg
777666999abcdef.jpg