Ich versuche, einen regulären Ausdruck in Perl zu finden, der mehrere Muster abgleicht und alle wie preg_match_all
in PHP zurückgibt.Wie kann ich einen globalen regulären Ausdruck in Perl erstellen?
Hier ist, was ich habe:
$str = 'testdatastring';
if($str =~ /(test|data|string)/) {
print "its found index location: $0 $-[0]-$+[0]\n";
print "its found index location: $1 $-[1]-$+[1]\n";
print "its found index location: $2 $-[2]-$+[2]\n";
print "its found index location: $3 $-[3]-$+[3]\n";
}
Das gibt mir nur das erste Spiel, das in dieser ist ‚Test‘. Ich möchte in der Lage sein, alle Vorkommen von bestimmten Mustern zu vergleichen: 'test', 'data' und 'string'.
Ich weiß, dass in PHP, können Sie preg_match_all für diese Art von Zweck verwenden:
if(preg_match_all('/(test|data|string)/', 'testdatastring', $m)) {
echo var_export($m, true);
}
Der obige PHP-Code würde alle 3 Strings entsprechen: 'test', 'Daten' und 'string'.
Ich möchte wissen, wie man das in Perl macht. Jede Hilfe würde sehr geschätzt werden.
Wie wenden Sie das in einer if/else-Anweisung an? – Carel
Hat es geschafft: if (@list = $ str = ~ Regex) {True} {False} benutze/regex/g um die gefundenen Items in der Liste zu gruppieren. – Carel