2015-11-02 42 views

回答

0

\u將下一個字符變爲大寫。所以它會將您捕獲的字符串中的第一個字符改爲大寫。

因此,例如:

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

會給你輸出Hello。如果你想改變所有字符爲大寫,那麼你應該嘗試

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

這在perlre under Escape sequences

記錄

\ u大寫下一個字符(想想vi)

+0

這裏有奇怪的switcharoo'+'vs'/ g'。對於第一種情況(OP),我更喜歡's /(\ w)/ \ u $ 1 /'; 「+」不只是無關的,它可能是浪費。對於「所有字符」的情況,我更喜歡's /(\ w +)/ \ U $ 1/g'(注意'\ U',而不是'\ u');這裏缺少'+'可能會浪費。 :) –

0

\u$1允許大寫第一個特許分組模式。 See Here

\ü首字母大寫下一個字符

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

$n變量包含在去年的正則表達式匹配的模式匹配的捕獲組如果匹配成功的字符串部分。

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

在上面的例子中的字符串將與捕獲組和字符串的每個第一字代替將與大寫\u替換。

看到這個:

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

如果打印$1,它會顯示捕獲組。

輸出:

bar 
Foo Bar 

查看所有第一個字符用大寫改變。

有關捕獲組的更多詳細信息,請參見perlrequick

+0

非常感謝。如果我將寫入$ 2而不是$ 1,它將打印什麼。你能否詳細說明$ n。 – user3176679

+0

它不會打印任何東西。 __ampuring group_是第一個括號'()'是$ 1,第二個是$ 2等等。請參閱鏈接的文檔。對於更多,你可以看看[perlre](http://perldoc.perl.org/perlre.html#Warning-on-\1-Instead-of-%241)。 – serenesat