【发布时间】:2013-08-08 13:52:16
【问题描述】:
我需要用正则表达式匹配文本中的标记:
Hello {FullName}, I wanted to inform that your product {ProductName} is ready.
Please come to our address {Address} to get it!
如何匹配文本中的特定标记并使用正则表达式填充值?
此外,我需要以安全的方式进行操作,并避免所有可能出现的问题,即我的标记拼写错误或有问题,如下所示:
**Hello {Full{Name}, I { wanted to inform that your product {{ProductName} is ready.
Please come to our } address {Addr{Street}ess} to get it!**
附言
我试过这个:{([^}]+)}
但如果我有例如:
{FullName}
它有效,但如果我有它也有效
{Full{Name} ...
附: 2:
我试过这个:{=[^{^=^}]*=},但我必须使用另一个字符而不是花括号......是否可以调整它以便在没有相等字符的情况下工作?
{=FullName=} - this works
{=Full{Name=} - this doesn't work
所以基本上令牌在{=Token=}而不是{Token}之间
【问题讨论】:
-
定义“避免”每一个可能的问题。你想跳过这些,还是让一些神奇的解析器决定它是好的?
-
它有是正则表达式吗?使用您的“错误条件”,自定义解析器将是更好的选择。
-
你的意思是
{Full{Name}应该被正则表达式找到并正确解释? -
为什么不使用解析器?您已经不遗余力地实现了这个基于令牌的漂亮系统。令牌请求解析器!
-
@smerny 大括号不匹配,因为我想指出错误的情况。