我还在学习如何写一个正则表达式,但这个我自己无法解决。
有一个字符串,其中包含一个如下所示的单词:## companyname ##
我尝试了以下内容,但它不起作用
content = Regex.Replace(content, @"\b##companyname##\b", setup.Company, RegexOptions.IgnoreCase);
答案 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
P.S:今天开始学习正则表达式:)