Php preg_replace删除模式之间字符串的多个不同部分
这是我刮掉的一根绳子的一小部分: SEPVALAjazz(音乐)SEPVALC5.59SEPVALAlatin(音乐)SEPVALAcountry(音乐)SEPVALC6.70SEPVALArock(音乐)SEPVALC5.89SEPVALAdance(音乐)SEPVALAworld(音乐)SEPVALC6.70 我已经用正则表达式操作了字符串以插入“SEPVALA”和“SEPVALC”值。我希望删除文本中出现的模式“SEPVALA”和“(音乐)SEPVALA”之间的字符串。在上面的例子中,这将删除“拉丁语”和“舞蹈” 期望的结果是: SEPVALAjazz(音乐)SEPVALC5.59SEPVALAcountry(音乐)SEPVALC6.70SEPVALArock(音乐)SEPVALC5.89SEPVALAworld(音乐)SEPVALC6.70 我目前正在实现的代码是: $pattern=“/SEPVALA(+?)\(music\)SEPVALA/” $replacement=“SEPVALA” $newstring=preg_replace($pattern,$replacement,$originalstring)Php preg_replace删除模式之间字符串的多个不同部分,php,regex,preg-replace,Php,Regex,Preg Replace,这是我刮掉的一根绳子的一小部分: SEPVALAjazz(音乐)SEPVALC5.59SEPVALAlatin(音乐)SEPVALAcountry(音乐)SEPVALC6.70SEPVALArock(音乐)SEPVALC5.89SEPVALAdance(音乐)SEPVALAworld(音乐)SEPVALC6.70 我已经用正则表达式操作了字符串以插入“SEPVALA”和“SEPVALC”值。我希望删除文本中出现的模式“SEPVALA”和“(音乐)SEPVALA”之间的字符串。在上面的例子中,这将
但是,这会删除太多的字符串,因为正则表达式引擎拾取第一个“SEPVALA”,并从此点向前删除所有内容,直到“(音乐)SEPVALA”(它应该这样做!)我需要一种从(音乐)SEPVALA向后扫描的方法删除有问题的文本并在下一个“SEPVALA”处停止,然后继续进行下一场“(音乐)SEPVALA”等。或任何其他方法来实现这一点。非常感谢。尝试用空字符串替换以下模式:
SEPVALA((?!SEPVAL[AC]).)+(?<=\(music\))(?=SEPVALA)
尝试用空字符串替换以下模式:
SEPVALA((?!SEPVAL[AC]).)+(?<=\(music\))(?=SEPVALA)
这正是我需要的。谢谢你,我为你的渊博知识而感到谦卑!这正是我需要的。谢谢你,我为你的渊博知识而感到谦卑!