簡體   English   中英

Perl 正則表達式 - 匹配數字旁邊的變量

[英]Perl regex - match variable next to digit

我想在 rexeg 替換表達式中為組匹配添加一個數字后綴。 如何將匹配變量與實際數字分開?

如果我願意

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 中似乎不起作用。

編輯:原來@toolic 是對的,s/([0-9]+)/${1}1/g; 確實有效,我的外殼有一個轉義問題。 如果您將該答案作為正確答案發布,我會接受! 謝謝

如評論中所述,用於反向引用的可選大括號(例如${1}而不是$1 )在 perl 中確實有效。

演示在這里

您可以使用正則表達式 : (\\d+)並用后綴 1 替換捕獲組

演示

例子 :

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM