我的字符串[[https://example.com|link]]转换<a href="https://example.com>link</a>我的正则表达式是/\[{2}(.*?)\|(.*?)\]{2}/s但它不起作用。我是 php 正则表达式的新手。
1 回答
呼唤远方
TA贡献1856条经验 获得超11个赞
你可以使用
preg_replace('~\[\[((?:(?!\[\[).)*?)\|(.*?)]]~s', '<a href="$1">$2</a>', $string)
请参阅正则表达式演示
细节
\[\[
- 一个[[
子串((?:(?!\[\[).)*?)
- 第 1 组($1
在替换模式中指该组内的值):任何字符 (.
),出现 0 次或多次但尽可能少 (*?
),不启动[[
字符序列 ((?!\[\[)
)\|
- 一个|
字符(.*?)
- 第 2 组 ($2
):]]
- 一个子]]
字符串。
请参阅PHP 演示:
$string = "[[some_non-matching_text]] [[https://example.com|link]] [[this is not matching either]] [[http://example2.com|link2]]";
echo preg_replace('~\[\[((?:(?!\[\[).)*?)\|(.*?)]]~s', '<a href="$1">$2</a>', $string);
// => [[some_non-matching_text]] <a href="https://example.com">link</a> [[this is not matching either]] <a href="http://example2.com">link2</a>
- 1 回答
- 0 关注
- 94 浏览
添加回答
举报
0/150
提交
取消