preg 替换 wiki 标签

preg replace wiki tag

我正在尝试替换字符串:

[[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(.*)\]],/ 但没有成功。

你可以使用

'~\[\[(?:[^][|]+\|)?([^][|]+)]]~'

并替换为</code>。见 <a href="https://regex101.com/r/jL1tM2/2" rel="nofollow">regex demo</a></p> <p><em>解释</em>:</p> <ul> <li><code>\[\[ - 文字 [[

  • (?:[^][|]+\|)? - 可选(1 或 0)除 []| 以外的 1+ 个字符,直至文字 |
  • [^][|]+ - 第 1 组:[]|
  • 以外的 1+ 个字符
  • ]] - 文字 ]]
  • PHP demo:

    $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('~\[\[(?:[^][|]+\|)?([^][|]+)]]~', "", $str);
    echo $result;