2016-10-13 3 views
0

rexegの置換式の数字にグループのマッチを接尾辞にしたいとします。マッチ変数とアクタルデジットをどのように分けるのですか?Perl正規表現 - 数字の隣の変数を一致させよう

私は

hello 55 friends -> hello 551 friend 
i am 29 happy -> i am 291 happy 

をしたい場合は、私は

s/([0-9]+)/$11/g; 

と試みたが、私は$1後に直接1を置けば、perlは$11(当然そう)として解釈します。 bashでは、私は${1}1と書くことができましたが、これはperlではうまくいかないようです。

EDIT:@toolicが正しく、s /([0-9] +)/ $ {1} 1/gでした。私のシェルにはエスケープな問題がありました。その回答を適切な回答として投稿すると、私はそれを受け入れます!おかげ

+6

'のS /([0-9] +)/ $ {1} 1/G;'は、Perlで私のために働きます。あなたの実行可能コードを "うまくいきません"で掲示してください。 – toolic

+1

'$ val =〜s /([0-9] +)/ $ 1.1/eg;' – ssr1012

+0

これは 'echo 'hello 55 friends \ ni am 29 happy' | perl -neの/([0-9] +)/ $ {1} 1 /;私のPerlで 'hello 551 friends 私は291 happy'です – yonyon100

答えて

0

の代わりに${1})はperlで動作します。

Demo here

+0

@toolicが同じ回答を投稿するまで、あなたの回答を受け入れます。 –

0

あなたは正規表現を使用することができます:(\d+)をとサフィックス1

Demo

例でキャプチャグループを置き換える:後方参照のためのコメントで述べたように、オプションの中括弧(例として

<?php 
$string = 'hello 55 friends i am 29 happ'; 
$pattern = '/(\d+)/'; 
$replacement = '${1}1'; 
echo preg_replace($pattern, $replacement, $string); 
?> 
関連する問題