php中的正则表达式从wiki文本中删除引文

Ram*_*mar 0 php regex preg-replace html-parsing

从给定的示例文本中,我希望文本与[[]]和{{}}中包含的文本区分开来

示范文本:

1988年12月11日,年仅15岁零232天,Tendulkar在[[孟买板球队|孟买]]对阵[[古吉拉特板球队]队的首场[[一流板球|一流]]比赛中得分100分|古吉拉特邦],让他成为最年轻的印第安人,在一流的首秀中获得一个世纪的成绩.他在他的第一个Deodhar和Duleep Trophy中打入了一个世纪.{{cite web | url = http://www.espnstar.com/cricket/international-cricket/news/detail/item136972/Sachin-Tendulkar-factfile/ | title = Sachin Tendulkar factfile | publisher = www.espnstar.com |访问日= 2009年8月3日}}他被孟买队长[[Dilip Vengsarkar]]选中后,看到他在篮网中谈判[[卡皮尔开发]],并在本赛季结束时成为孟买最高得分手.他得到583分平均为67.77,并且是整体得分第六高的{{cite web | url = http://blogs.cricinfo.com/link_to_database/ARCHIVE/1980S/1988-89/IND_LOCAL/RANJI/STATS/IND_LOCAL_RJI_AVS_BAT_MOST_RUNS.html | title = 1988-89 Ranji season - Most Runs | publisher = Cricinfo | accessdate = 2009年8月3日}}他在[[Irani Trophy]]决赛中也创造了一个不败的世纪,{{cite web | url = http:// cricketarchive.com/Archive/Scorecards/52/52008.html|title=Rest of India v Delhi in 1989/90 | publisher = Cricketarchive | accessdate = 2009年8月3日}}并在明年被选中参加巴基斯坦之旅一流的海洋 上.

我试过这个:

$patterns = ("/^{{*/", "/*}}$/" );$replacements = "";
  preg_replace($patterns, $replacements, $parts);
  print_r($parts);
Run Code Online (Sandbox Code Playgroud)

还有这个:

$parts = preg_replace("/\[(?:\\\\|\\\]|[^\]])*\]/", "", $ans_str);
Run Code Online (Sandbox Code Playgroud)

这也是:

$pattern = ("/\[.*?\]/", "/\{.*?\}/");
  $ans = preg_replace($pattern, "", $parts);
Run Code Online (Sandbox Code Playgroud)

这是行不通的.请帮忙,谢谢.

Lep*_*eus 6

这应该可以解决问题

$str = "On 11 December 1988, ...";
$str = preg_replace('/\{\{.+\}\}/Us', '', $str);
var_dump($str);
Run Code Online (Sandbox Code Playgroud)

U修饰符用于ungreedy模式,这意味着尽快停止匹配(以避免所有引用被捕获为一个巨大的匹配).

编辑:添加了s修饰符,请参阅注释