[英]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.