[英]Increment a counter with regex in PHP
我試圖在PHP的字符串末尾增加一個計數器。 計數器始終位於字符串末尾的括號之間,而其余部分實際上可以是任何值,這意味着甚至可能存在類似於計數器的內容(即:括號之間的數字),但含義不同,因此不應改變了。
范例:
Foo (Bar) (666) (123)
: Foo (Bar) (666)
是主體,而123
是計數器。 我想要得到: Foo (Bar) (666) (124)
。 (666)
看起來像是計數器,但是由於它不在字符串的末尾,因此不被認為是計數器。 Lorem ipsum dolor sit amet (1337)
: Lorem ipsum dolor sit amet
是主要部分, 1337
是櫃台。 我想要得到: Lorem ipsum dolor sit amet (1338)
。 確切的實現無關緊要。 我只是想使用一個正則表達式來匹配主體和計數器,所以我可以將它們放入變量中,增加計數器並重新構建字符串。
我可以輕松地將計數器與\\((\\d*)\\)$
類的東西匹配,但是我不知道如何匹配其余的字符串。
什么正則表達式可以完成這項工作?
好吧,我不喜歡這種解決方案,但是由於您已經提出了要求:
這是使用preg_replace_callback的解決方案:
(?<=\()\d+(?=\)$)
樣例代碼 :
$re = '/(?<=\()\d+(?=\)$)/';
$str = 'Lorem ipsum dolor sit amet (1337)';
$result = preg_replace_callback(
$re,
function ($matches) {
return ++$matches[0];
},
$str
);
echo "The result of the substitution is ".$result;
PS:如果您的“字符串”實際上是多行文件的內容,請在$re
中用\\Z
替換$
以匹配文件末尾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.