所以我试图替换一个单词@theplace
或@theplaces
使用正则表达式模式,如:
String Pattern = string.Format(@"\b{0}\b", PlaceName);
但是当我进行替换时,它没有找到模式,我猜这是@
问题所在的符号。
有人可以告诉我我需要对 Regex 模式做什么才能使其正常工作吗?
以下代码将替换@thepalace
或@thepalaces
的任何实例<replacement>
。
var result = Regex.Replace(
"some text with @thepalace or @thepalaces in it."
+ "\r\nHowever, @thepalacefoo and bar@thepalace won't be replaced.", // input
@"\B@thepalaces?\b", // pattern
"<replacement>"); // replacement text
使?
前面的字符 , 成为s
可选的。我正在使用静态Regex.Replace方法。\b
匹配单词和非单词字符之间的边界。\B
匹配所有\b
不匹配的边界。请参阅正则表达式边界。
结果
some text with <replacement> or <replacement> in it.
However, @thepalacefoo and bar@thepalace won't be replaced.
您的问题* 是.\b
之前的(单词边界)@
。空格和 . 之间没有单词边界@
。
您可以将其删除,或将其替换为无边界,即大写字母B
。
string Pattern = string.Format(@"\B{0}\b", PlaceName);
* 假设PlaceName
以@
.
尝试这个:
string PlaceName="theplace", Replacement ="...";
string Pattern = String.Format(@"@\b{0}\b", PlaceName);
string Result = Regex.Replace(input, Pattern, Replacement);