Perl正则表达式中的Subsitution命令?

时间:2015-11-02 06:55:34

标签: regex perl

$string =~ s/(\w+)/\u$1/g;

我无法理解\u$1在上述命令中正在做什么 请帮帮我。

3 个答案:

答案 0 :(得分:1)

如果匹配成功,$n变量包含匹配上一个正则表达式匹配模式中捕获组的字符串部分。

$string =~ s/(\w+)/\u$1/g;

在上面的示例中,string将替换为capture group,并且字符串的每个第一个单词都将替换为大写\u

见:

my $string = 'foo bar';
$string =~ s/(\w+)/\u$1/g;
print $1, "\n";
print $string, "\n";

如果您打印$1,它将显示捕获组。

输出:

bar
Foo Bar

查看用大写字母更改的所有第一个字符。

有关捕获群组的详细信息,请参阅perlrequick

答案 1 :(得分:0)

\u将下一个字符转为大写。因此,它会将捕获的字符串中的第一个字符更改为大写。

例如:

my $string="hello";
$string =~ s/(\w+)/\u$1/;

将为您输出Hello。如果您希望将所有字符更改为大写,那么您应该尝试

$string =~ s/(\w)/\u$1/g;

perlre under Escape sequences

中记录了这一点
  

\ u大写下一个字符(想想vi)

答案 2 :(得分:0)

\u$1允许大写第一个包机分组模式。 See Here

  

\ u标题下一个字符

my $string = "stack overflow";
$string =~m/(\w+)/\u$1/g; 
# Stack Overflow