regex - 在替换中操作正则表达式匹配

标签 regex perl

我想将括号添加到与正则表达式匹配的第一个子字符串中。我试图通过使用 $1 变量来实现这一点,但是在尝试编译时出现错误。

我的错误在哪里,有没有更方便的方法来了解比赛的值(value)?

代码:

use strict;
use warnings;

print "Hello world!\n";
my $str = "a aa";

$str =~ s/a/\($1\)/;
print "$str \n";

错误:

Use of uninitialized value $1 in concatenation (.) or string 
     at /home/bc/projects/regex.pl line 8.

输出应该是:

(a) aa

最佳答案

您需要使用capturing parens在正则表达式中:

$str =~ s/(a)/($1)/;

注意:您不需要转义正则表达式特殊字符,例如 s/// 的 RHS(右侧)中的括号。

关于regex - 在替换中操作正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23858274/

相关文章:

r - 如何将引用列表转换为数据框?

regex - Perl if 语句混淆

perl - 为什么我的 Perl 脚本以 137 退出?

regex - 使用 mod_rewrite 更改永久链接现在会出现内部服务器错误 500

用于验证 192.169.0.0/24 等模式的 Javascript 正则表达式

java - Java 中 = 后跟任何字符串,后跟 & 的正则表达式

Perl 将本地时间格式的时间转换为 YYYYMMDD

perl - Perl中获取两个字符串列表的交集

perl - 使用 WWW::Mechanize 凭证

ruby-on-rails - 键值对的正则表达式 Markdown 字符串