如何跳过第一个正则表达式匹配?
使用正则表达式和 php.ini 时是否有跳过第一个匹配项?
或者是否有某种方法可以使用 str_replace 来实现此目的。
谢谢
更新 我试图从另一个字符串中删除一个字符串的所有实例,但我想保留第一次出现的情况,例如
$toRemove = 'test';
$string = 'This is a test string to test to removing the word test';
输出字符串将是:
这是一个要test的测试字符串删除单词 test
Is there anyway to skip the first match when using regex and php.
Or is there some way of achieveing this using str_replace.
Thanks
UPDATE
I am trying to remove all the instances of a string from another string but I want to retain the first occurance e.g
$toRemove = 'test';
$string = 'This is a test string to test to removing the word test';
Ouput string would be:
This is a test string to test to removing the word test
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
这个想法是匹配并捕获每个匹配之前的任何内容,然后将其重新插入。
(?:^.*?test)?
导致第一个 em> 要包含在捕获中的test
实例。 (所有\b
都是为了避免部分单词匹配,例如smartest
或testify
中的test
。 )The idea is to match and capture whatever precedes each match, and plug it back in.
(?:^.*?test)?
causes the first instance oftest
to be included in the capture. (All the\b
s are to avoid partial-word matches, like thetest
insmartest
ortestify
.)简单的 PHP 方法:
会给你“AN”。
更新:不知道这是替换。试试这个:
找到第一个匹配项并记住它在哪里,然后删除所有内容,然后将第一个位置的所有内容放回原位。
Easy PHP way:
will give you "AN".
UPDATE: Didn't know it was a replace. Try this:
Find the first match and remember where it was, then delete everything, then put whatever was in the first spot back in.
假设“blah”是您的正则表达式模式,blah(blah) 将匹配并捕获第二个模式
assume 'blah' is your regex pattern, blah(blah) will match and capture the second one
答案迟到了,但可能对人们有用。
Late answer but it might be usefull to people.