在同一变量上运行regexp两次
如何在同一个变量上多次运行regexp? 我想要在同一变量上运行regexp两次,regex,perl,Regex,Perl,如何在同一个变量上多次运行regexp? 我想要 $$contRef=~/Kurs.*(\d+,?\d*)您正在寻找的正是您刚刚粘贴的内容 $$contRef =~ /Kurs.*?(\d+,?\d*)<\/span/msgi; # Do stuff with $1 # ... # ... $$contRef =~ /Price(\d+,?\d*)<\/span/msgi; # Do new stuff with the new $1 # ... # ... $$contRef
$$contRef=~/Kurs.*(\d+,?\d*)您正在寻找的正是您刚刚粘贴的内容
$$contRef =~ /Kurs.*?(\d+,?\d*)<\/span/msgi;
# Do stuff with $1
# ...
# ...
$$contRef =~ /Price(\d+,?\d*)<\/span/msgi;
# Do new stuff with the new $1
# ...
# ...
$$contRef=~/Kurs.*(\d+,?\d*)也许是您不寻常地使用变量造成的问题?这台机器可以打印9922
$a="Kursplat99</spanPrice22</span";
$contRef = "a";
$$contRef =~ /Kurs.*?(\d+,?\d*)<\/span/msgi;
print $1;
$$contRef =~ /Price(\d+,?\d*)<\/span/msgi;
print $1;
$a=“Kursplat99正如评论中所建议的,可能是一个while
、交替(|
)和一个用于捕获的数组在这里会很有帮助:
use strict;
use warnings;
use Data::Dumper;
my $string = "Kursplat99</span>Price22</span";
my @array;
push @array, $1 while $string =~ /(?:Kurs.*?|Price)(\d+,?\d*)<\/span/msgi;
print Dumper \@array if @array;
你想实现什么?我想找到一些模式(并加入$1),然后我想再次找到另一个模式。在相同的内容中(在相同的变量中)。你到底尝试了什么,遇到了什么问题?你可以使用管道字符
来分隔两个匹配项吗?例如$$contRef=~/Kurs.*(\d+,?\d*))您考虑的计数器仅在处理完全相同的模式时发生。例如,在while循环中:while($$contRef=~/Kurs.*?(\d+,?\d*))
$a="Kursplat99</spanPrice22</span";
$contRef = "a";
$$contRef =~ /Kurs.*?(\d+,?\d*)<\/span/msgi;
print $1;
$$contRef =~ /Price(\d+,?\d*)<\/span/msgi;
print $1;
use strict;
use warnings;
use Data::Dumper;
my $string = "Kursplat99</span>Price22</span";
my @array;
push @array, $1 while $string =~ /(?:Kurs.*?|Price)(\d+,?\d*)<\/span/msgi;
print Dumper \@array if @array;
$VAR1 = [
'99',
'22'
];