删除未使用的合并标记正则表达式

时间:2016-09-30 19:31:20

标签: c# regex

我正在使用C#并编写邮件合并应用程序。我的用户按如下方式存储模板

Dear [[-UserName-]],
You have been subscribed for [[-SubscriptionName-]]...

等等。 [[-xxxxx-]]占位符之间会有很多自定义字段。我把它们合并得很好。但有时他们不会为一些占位符而过。我想用正则表达式找到那些东西并用空字符串替换它们。

从技术上讲,我想查找正则表达式以查找[[-what ever it is in between-]]并将空字符串替换为[[--]]个标记

2 个答案:

答案 0 :(得分:2)

您可以使用:

\[{2}(-.*?-)\]{2}
# look for [[-, -]] and anything in between.

这称为懒星点,请参阅a demo on regex101.com

答案 1 :(得分:0)

由于标签名称中没有破折号,您可以使用此正则表达式:

\[\[-([^-]+)-\]\]

标记名称将位于捕获组1中。显然,我建议使用@""类型的字符串作为正则表达式。

您将需要使用替换字符串:

[[--]]

基本上正则表达式找到[[-,然后捕获一堆非-个字符,然后找到-]]