Thread Text Tagging (1 answers)
Opened by kimmy at 2011-03-18 16:19

clms
 2011-03-18 16:44
#146626 #146626
User since
2010-08-29
373 Artikel
BenutzerIn
[default_avatar]
2011-03-18T15:19:52 kimmy
Hallo,

ich habe eine Liste von RegEx, und damit hätte ich gern einen Text durchsuchen und taggen. ...
Code (perl): (dl )
1
2
3
4
5
...             
if ($line =~ /\s($reg)\s/) {
  my $treffer = $1;
  $line =~ s/$1/\($treffer\)/g;
}

Mein Skript läuft ja schon, aber nur einen Treffer pro Zeile.

Dein Skript sollte auch mehrere Treffer pro Zeile taggen, aber nur wenn die folgenden Treffer den gleichen String liefern, wie der erste Treffer pro Zeile.

Dein Problem: Die Match-Operation, die den Treffer liefert, wird pro Zeile nur einmal ausgeführt (kein /g Flag gesetzt). Die anschließende Ersetzung s///g würde mehrfach matchen, aber immer nur mit dem ersten Treffer.

Ersetz den if_Block doch einfach durch
$line =~ s/(?<=\s)($reg)(?=\s)/($1)/g; (ungetestet)
Das sollte alle Treffer dre Regex in der Zeile ersetzen.

View full thread Text Tagging