在perl regex中,分隔反向引用后跟数字文字



我发现了这个相关的问题:在perl中,替换文本中的反向引用后跟数字文字但似乎完全不同。我有一个像这样的正则表达式

s/([^0-9])([xy])/1 12/g
                   ^
              whitespace here

但是这个空白出现在替换中。

如何在不让 perl 混淆对 11 的反向引用的情况下获取替换字符串中的空格?

例如。 15+x+y15+ 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

最新更新