/ / Wie kann ich mit dem Operator s /// ein Zeichen in eine Zeichenfolge einfügen? - Regex, Perl, String

Wie kann ich mit dem Operator s /// ein Zeichen in eine Zeichenfolge einfügen? - Regex, Perl, String

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 " # "