从给定的示例文本中,我希望文本与[[]]和{{}}
中包含的文本区分开来示例文字:
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);
和此:
$parts = preg_replace("/\[(?:\\\\|\\\]|[^\]])*\]/", "", $ans_str);
这也是:
$pattern = ("/\[.*?\]/", "/\{.*?\}/");
$ans = preg_replace($pattern, "", $parts);
它不起作用。 请帮助,谢谢。
答案 0 :(得分:6)
这应该可以解决问题
$str = "On 11 December 1988, ...";
$str = preg_replace('/\{\{.+\}\}/Us', '', $str);
var_dump($str);
U修饰符用于ungreedy模式,这意味着尽快停止匹配(以避免所有引用被捕获为一个巨大的匹配)。
编辑:添加了s修饰符,请参阅注释
答案 1 :(得分:0)
// remove `{{cite}}` tags
$str = preg_replace('/\s*\{\{[^}{]*+\}\}\s*/', ' ', $str);
// remove links--including rollover text--leaving link text
$str = preg_replace('/\[\[(?:[^][|]*+\|)?+([^][]*+)\]\]/', '$1', $str);
<强> see demo on ideone.com 强>
答案 2 :(得分:-1)
以下两行就是诀窍:
$str = preg_replace(/\s*\{{.*?\}}\s*/g, " ", $str);//to remove the curly braces and the text between them.
$str = preg_replace(/[\[(.)\]]/g, "", $str);//to remove the square braces.
抱歉它出了问题。