Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 在perl正则表达式中,后面跟数字文字的单独反向引用_Regex_Perl_Backreference - Fatal编程技术网

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