Regex 在perl正则表达式中,后面跟数字文字的单独反向引用
我发现了这个相关的问题: 但这似乎完全不同。 我有一个像这样的正则表达式Regex 在perl正则表达式中,后面跟数字文字的单独反向引用,regex,perl,backreference,Regex,Perl,Backreference,我发现了这个相关的问题: 但这似乎完全不同。 我有一个像这样的正则表达式 s/([^0-9])([xy])/\1 1\2/g ^ whitespace here 但在替换中出现了空白 如何在不让perl混淆对\11的反向引用的情况下,不获取替换字符串中的空格 例如。 15+x+y更改为15+1x+1y。 我想得到15+1x+1y只需在数字周围加上大括号: s/([^0-9])([xy])/${1}1${2}/g \1是一个与第
s/([^0-9])([xy])/\1 1\2/g
^
whitespace here
但在替换中出现了空白
如何在不让perl混淆对\11
的反向引用的情况下,不获取替换字符串中的空格
例如。
15+x+y
更改为15+1x+1y
。
我想得到
15+1x+1y
只需在数字周围加上大括号:
s/([^0-9])([xy])/${1}1${2}/g
\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{}{}{}g
语法(令人惊讶),这甚至可以工作。
s/[^0-9]\K(?=[xy])/1/g