示例
preg_replace('/\{[a-zA-Z.,\(\)0-9]+\}/', 'Replaced', 'Lorem ipsum dolor sit {tag1({tag2()})}, consectetur adipiscing elit.');
结果:
Lorem ipsum dolor sit {tag1(Replaced)},consectetur adipiscing elit。
问题
正如您所看到的,“tag2”已被替换,但我想替换“tag1” 有谁知道我怎么能这样做?
(在某些情况下,它可能是这样的:{tag1({tag2({tag3()})})})
等等。)
顺便说一下,我实际上正在使用preg_replace_callback,但更容易用preg_replace
显示它
以下是您可以测试代码的网站:http://www.spaweditor.com/scripts/regex/index.php
答案 0 :(得分:1)
您需要在字符集中添加花括号。这是我使用的模式:
/\{[a-zA-Z.,\(\)\{\}0-9]+\}/
结果如下:
"Lorem ipsum dolor sit Replaced, consectetur adipiscing elit."
答案 1 :(得分:1)
一旦你开始讨论匹配嵌套模式(例如:匹配像(foo (bar) fu)
这样的内部括号内组),那么正则表达式就是错误的工具。正则表达式是无状态的,在这种情况下,意味着它们无法计算打开多少括号。
如果您想要做类似的事情,可能需要查看parser
答案 2 :(得分:0)
您可能要使用T-Regx:
services.AddMvc().ConfigureApplicationPartManager(apm =>
{
foreach (var b in new CompiledRazorAssemblyApplicationPartFactory().GetApplicationParts(AssemblyLoadContext.Default.LoadFromAssemblyPath(".../ViewAssembypath/file.Views.dll")))
apm.ApplicationParts.Add(b);
});