我正在尝试将注释字符插入到与此类似的字符串中:
-CreateVideoTracker VT1 "vt name"
变为
-CreateVideoTracker VT1 # "vt name"
VT1字实际上可以是任何东西,所以我正在使用正则表达式
$line =~ s/\-CreateVideoTracker \w/\-CreateVideoTracker \w # /g;
给了我结果:
-CreateVideoTracker w #T1 "vt name"
有没有办法用一个正则表达式做到这一点,还是我需要拆分字符串并手动插入注释?
答案 0 :(得分:9)
$line =~ s/^(\-CreateVideoTracker)\s+(\w+)/$1 $2 #/;
正则表达式前半部分中括号内的表达式(称为“捕获缓冲区”)引用为$1
,$2
。等等。下半场。
答案 1 :(得分:2)
您可以使用Perl 5.10正则表达式的\K
功能;
$line=~s/^\-CreateVideoTracker\s+\w+\K/ #/;
答案 2 :(得分:0)
你有两个问题:
$line =~ s/\-CreateVideoTracker \w/\-CreateVideoTracker \w # /g;
首先,你想匹配多个字符的单词,所以在左边,\ w应该是\ w +。 其次,你不能在右侧使用像\ w这样的模式;而是使用()在左边捕获你想要的东西,然后用$ 1,$ 2等把它放在右边:
$line =~ s/\-CreateVideoTracker (\w+)/\-CreateVideoTracker $1 # /g;
答案 3 :(得分:-1)
(?<=-CreateVideoTracker\s[^\s]*)(?<replacemelolkthx>\s)
替换为“#”