捕获内部匹配#2和#4并替换它们

时间:2015-10-27 18:09:45

标签: regex

我有一个简单的regex/((\[#)(\w+)(\]))/g

这会捕获我想捕获的组。示例组为[#recipient]。我需要捕获开头[#并替换为{{离开\w+并捕获结束]并将其替换为}},以便此字符串可以是使用twig的字符串加载器扩展包含在twig电子邮件模板中。

TLDR ;目标是转换:[#recipient] {{recipient}},无论内容词\w+是什么。

我对正则表达式不是很熟悉,而且基本preg_match以外的任何东西都超出了我的能力范围。我应该使用str_replace吗?我担心用户忘记关闭语句并使用字符串替换的情况我无法确保\w+匹配。

1 个答案:

答案 0 :(得分:1)

您可以在PHP中使用此正则表达式:

$re = '\[#(\w+)\]'; 
$str = "Hello [#recipient] how are you today?\n\nThis email is writing to inform you of [#message]\n\nregards,\n[#from]\n[#website]"; 
$subst = "{{$1}}"; 

$result = preg_replace($re, $subst, $str);

如果您想允许[#...]中的任何文字:

,请使用此正则表达式
$re = '\[#([^]]+)\]';

RegEx Demo