udi*_*209 6 regex perl backreference
我发现了这个相关的问题:在perl中,替换文本中的反向引用后跟数值文字, 但它似乎完全不同.我有像这样的正则表达式
s/([^0-9])([xy])/\1 1\2/g
^
whitespace here
Run Code Online (Sandbox Code Playgroud)
但这个空白出现在替代中.
如果没有perl混淆反向引用,我怎么不在替换字符串中获取空格
\11?
例如.
15+x+y改变为15+ 1x+ 1y.我想得到15+1x+1y.
ike*_*ami 11
\1是一个正则表达式原子,匹配捕获的第一个捕获.在替换表达式中使用它是没有意义的.你想要的$1.
$ perl -we'$_="abc"; s/(a)/\1/'
\1 better written as $1 at -e line 1.
Run Code Online (Sandbox Code Playgroud)
在字符串文字(包括替换的替换表达式)中,您可以$var使用curlies 分隔:${var}.这意味着您需要以下内容:
s/([^0-9])([xy])/${1}1$2/g
Run Code Online (Sandbox Code Playgroud)
以下更有效(虽然给出了不同的答案xxx):
s/[^0-9]\K(?=[xy])/1/g
Run Code Online (Sandbox Code Playgroud)