Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php preg_replace删除模式之间字符串的多个不同部分_Php_Regex_Preg Replace - Fatal编程技术网

Php preg_replace删除模式之间字符串的多个不同部分

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”之间的字符串。在上面的例子中,这将

这是我刮掉的一根绳子的一小部分:

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)


但是,这会删除太多的字符串,因为正则表达式引擎拾取第一个“SEPVALA”,并从此点向前删除所有内容,直到“(音乐)SEPVALA”(它应该这样做!)我需要一种从(音乐)SEPVALA向后扫描的方法删除有问题的文本并在下一个“SEPVALA”处停止,然后继续进行下一场“(音乐)SEPVALA”等。或任何其他方法来实现这一点。非常感谢。

尝试用空字符串替换以下模式:

SEPVALA((?!SEPVAL[AC]).)+(?<=\(music\))(?=SEPVALA)

尝试用空字符串替换以下模式:

SEPVALA((?!SEPVAL[AC]).)+(?<=\(music\))(?=SEPVALA)

这正是我需要的。谢谢你,我为你的渊博知识而感到谦卑!这正是我需要的。谢谢你,我为你的渊博知识而感到谦卑!