我发现了这个相关的问题:在perl中,替换文本中的反向引用后跟数字文字但似乎完全不同。我有一个像这样的正则表达式
s/([^0-9])([xy])/1 12/g
^
whitespace here
但是这个空白出现在替换中。
如何在不让 perl 混淆对
11
的反向引用的情况下获取替换字符串中的空格?
例如。 15+x+y
对15+ 1x+ 1y
的更改。我想得到15+1x+1y
.
>1
是一个正则表达式原子,与第一次捕获捕获的内容相匹配。在替换表达式中使用它毫无意义。你想要$1
.
$ perl -we'$_="abc"; s/(a)/1/'
1 better written as $1 at -e line 1.
在字符串文本(包括替换的替换表达式)中,可以使用卷曲分隔$var
:${var}
。这意味着您需要以下内容:
s/([^0-9])([xy])/${1}1$2/g
以下更有效(尽管对xxx
给出了不同的答案):
s/[^0-9]K(?=[xy])/1/g
只需在数字周围加上大括号:
s/([^0-9])([xy])/${1}1${2}/g