假设我有一个很长的字符串,如:
helloABCABC 100gABC
我想删除其中一个ABC子串,因此它只显示第一次出现。
所需的输出是:
helloABC 100g
我尝试了积极的前瞻,但它没有那么好用。
有什么想法吗?
答案 0 :(得分:1)
你可以do this然后replace with $1
:
(.{2,})\1+
但@HamZa绝对是正确的,你可能会发现完全有效的东西。我做了这样,重复的字符串需要至少有2个字符(所以4个字符,包括它的第一次重复)。但这并没有消除逻辑问题。
您可以在上面regex101 demo中看到这个单词hottentottententententoonstelling这是荷兰语(我的语言)中的合法单词被正则表达式替换错误地破坏。我确定你可以用英语或你选择的语言来思考这样的场景。
答案 1 :(得分:0)
答案 2 :(得分:0)
不需要正则表达式:
$index = strpos($str, 'ABC');
$result = substr($str, 0, $index + 3) . str_replace('ABC', '', substr($str, $index + 3));
这也比使用正则表达式引擎更快。