带有特定单词和主题标签的C#正则表达式

时间:2014-04-29 11:41:15

标签: c# regex

我还在学习如何写一个正则表达式,但这个我自己无法解决。

有一个字符串,其中包含一个如下所示的单词:## companyname ##

我尝试了以下内容,但它不起作用

content = Regex.Replace(content, @"\b##companyname##\b", setup.Company, RegexOptions.IgnoreCase);

4 个答案:

答案 0 :(得分:3)

\ b匹配单词边界,因此它不匹配#character。 使用\ B代替匹配非单词边界。

content = Regex.Replace(content, @"\B##companyname##\B", setup.Company, RegexOptions.IgnoreCase);

答案 1 :(得分:0)

这是因为单词边界与单词边界位置匹配,例如空格或字符串的开头或结尾。

但是你的正则表达式本身包含#。这样做:

"##companyname##"

原始正则表达式不是单词边界。

答案 2 :(得分:0)

问题在于\b说明符的含义:

  

指定匹配必须在\ w(字母数字)和\ W(非字母数字)字符之间的边界上进行。匹配必须出现在单词边界上 - 即,由任何非字母数字字符分隔的单词中的第一个或最后一个字符。

在你的情况下,它不是单词之间的真正边界,因为在你的情况下,#<以及>都不是单词字符。

在我的观点中,只需简单地替换##companyname##即可。

答案 3 :(得分:0)

正则表达式

中\ b和\ B之间的差异

\b匹配开头或结尾的空字符串\B匹配不在单词开头或结尾的空字符串。

content = Regex.Replace(content,
                        @"\B##companyname##\B",
                        setup.Company,
                        RegexOptions.IgnoreCase
                       );

您可以在此处测试此正则表达式B##companyname##\B - http://regexr.com/38p8i

enter image description here

P.S:今天开始学习正则表达式:)