我想要一个正则表达式来删除括号和文本,直到字符串
中的|
符号
输入:hello [[aa-a]] bbb [[ccc|ddd]] eee [[fff|ggg]] hhh [[iii]] jjj
预期输出:hello [[aa-a]] bbb ddd eee ggg hhh [[iii]] jjj
我希望在文本字符串中存在此类模式的地方重复执行..
答案 0 :(得分:1)
试
$html = '[[Erzbistum Köln | kirchlicher Macht]]';
preg_match('/\|(.*)]]$/', $html, $matches);
echo $matches[1]; //kirchlicher Macht
进行检查: -
if(preg_match('/\|(.*)]]$/', $yourstring)) {
// do your stuff
}
答案 1 :(得分:1)
<?php
$text = 'Sitz weltlicher und insbesondere [[Erzbistum Köln|kirchlicher Macht]] trugen';
$text = preg_replace('/\[\[.*?\|(.*?)\]\]/', '\\1', $text);
echo $text;
?>
<强>输出:强>
Sitz weltlicher und insbesondere kirchlicher Macht trugen
答案 2 :(得分:0)
在这种情况下,您可以使用标准字符串函数,而不使用正则表达式。
示例:
<?php
$in = "[[Erzbistum Köln | kirchlicher Macht]]";
$out = substr( $in, strpos($in, "|") );
echo trim($out,"[]| ");
见结果:http://codepad.org/XsNVu6fJ
要更新案例,您可以使用此代码
<?php
$in = "Sitz weltlicher und insbesondere [[Erzbistum Köln|kirchlicher Macht]] trugen";
$out = preg_replace("/\\[\\[.+\\|(.+)\\]\\]/i", "$1", $in);
echo $out;