Próbuję wstawić znak komentarza do ciągu coś podobnego do tego:
-CreateVideoTracker VT1 "vt name"
staje się
-CreateVideoTracker VT1 # "vt name"
Słowo VT1 może być w rzeczywistości czymkolwiek, więc używam wyrażenia regularnego
$line =~ s/-CreateVideoTracker w/-CreateVideoTracker w # /g;
co daje mi wynik:
-CreateVideoTracker w #T1 "vt name"
Czy można to zrobić za pomocą jednego wyrażenia regularnego, czy też muszę podzielić ciąg i wstawić komentarz ręcznie?
Odpowiedzi:
9 dla odpowiedzi № 1$line =~ s/^(-CreateVideoTracker)s+(w+)/$1 $2 #/;
Wyrażenia w nawiasach kwadratowych (znane jako „bufory przechwytywania”) w pierwszej połowie wyrażenia regularnego są określane jako $1
, $2
. itp. w drugiej połowie.
2 dla odpowiedzi nr 2
Możesz użyć K
funkcja wyrażeń regularnych Perla 5.10;
$line=~s/^-CreateVideoTrackers+w+K/ #/;
0 dla odpowiedzi № 3
Masz dwa problemy w:
$line =~ s/-CreateVideoTracker w/-CreateVideoTracker w # /g;
Po pierwsze, chcesz dopasować wiele znakówsłowa, więc po lewej stronie w powinno być w +. Po drugie, nie możesz używać wzorów takich jak w po prawej stronie; zamiast tego przechwyć to, co chcesz po lewej stronie za pomocą () i umieść to po prawej za pomocą 1 USD, 2 USD itp .:
$line =~ s/-CreateVideoTracker (w+)/-CreateVideoTracker $1 # /g;
-1 dla odpowiedzi № 4
(?<=-CreateVideoTrackers[^s]*)(?<replacemelolkthx>s)
zamienić " # "