Ich versuche, ein Kommentarzeichen in eine ähnliche Zeichenfolge einzufügen:
-CreateVideoTracker VT1 "vt name"
wird
-CreateVideoTracker VT1 # "vt name"
Das VT1-Wort kann eigentlich alles sein, also verwende ich den regulären Ausdruck
$line =~ s/-CreateVideoTracker w/-CreateVideoTracker w # /g;
was mir das Ergebnis gibt:
-CreateVideoTracker w #T1 "vt name"
Gibt es eine Möglichkeit, dies mit einem einzelnen regulären Ausdruck zu tun, oder muss ich die Zeichenfolge aufteilen und den Kommentar manuell einfügen?
Antworten:
9 für die Antwort № 1$line =~ s/^(-CreateVideoTracker)s+(w+)/$1 $2 #/;
Die in Klammern gesetzten Ausdrücke (bekannt als "Erfassungspuffer") in der ersten Hälfte des regulären Ausdrucks werden als bezeichnet $1
, $2
. usw. in der zweiten Hälfte.
2 für die Antwort № 2
Du könntest das benutzen K
Funktion von Perl 5.10 Regexs;
$line=~s/^-CreateVideoTrackers+w+K/ #/;
0 für die Antwort № 3
Sie haben zwei Probleme in:
$line =~ s/-CreateVideoTracker w/-CreateVideoTracker w # /g;
Zunächst möchten Sie mehrere Zeichen abgleichenWörter, also sollte auf der linken Seite w w + sein. Zweitens können Sie keine Muster wie w auf der rechten Seite verwenden, sondern das, was Sie wollen, links mit () erfassen und mit $ 1, $ 2 usw.: Rechts platzieren.
$line =~ s/-CreateVideoTracker (w+)/-CreateVideoTracker $1 # /g;
-1 für die Antwort № 4
(?<=-CreateVideoTrackers[^s]*)(?<replacemelolkthx>s)
ersetzen mit " # "