在同一变量上运行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

如何在同一个变量上多次运行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=~/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'
        ];