使用c# Regex将整个单词替换为符号

本文关键字:单词 替换 符号 Regex 使用 | 更新日期: 2023-09-27 18:11:45

所以我试图用一个Regex模式代替像@theplace@theplaces这样的词:

String Pattern = string.Format(@"'b{0}'b", PlaceName);

但是当我做替换时,它没有找到模式,我猜这是@符号,这是问题。

有人能告诉我我需要做什么Regex模式让它工作?

使用c# Regex将整个单词替换为符号

下面的代码将用<replacement>替换@thepalace@thepalaces的任何实例。

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成为可选的。我使用静态正则表达式。替代方法。'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);