我试图替换字符串:
[[Rock music|rock]], [[blues]], [[soul music|soul]], [[pop music|pop]],[[Have a Little Faith (Joe Cocker album)|Have a Little Faith]]至:
rock, blues, soul, pop, Have a Little Faith什么是正确的准则?
我测试了这个模式/\[[[\w\s]+\W(.*)\]],/,但没有起作用。
发布于 2016-04-13 22:27:33
您可以使用
'~\[\[(?:[^][|]+\|)?([^][|]+)]]~'代之以$1。见regex演示
解释
\[\[ -文字[[(?:[^][|]+\|)? -可选(1或0) 1+字符,但不包括[、]和|,直到文字|。[^][|]+ -第1组:[、]和|以外的1+字符]] -文字]]PHP演示:
$str = "[[Rock music|rock]], [[blues]], [[soul music|soul]], [[pop music|pop]], [[Have a Little Faith (Joe Cocker album)|Have a Little Faith]] ";
$result = preg_replace('~\[\[(?:[^][|]+\|)?([^][|]+)]]~', "$1", $str);
echo $result;https://stackoverflow.com/questions/36610633
复制相似问题