替换部分正则表达式匹配

本文关键字:正则表达式 替换部 | 更新日期: 2023-09-27 18:33:49

我需要一些帮助来替换与正则表达式匹配的字符串的一部分。 例如,我有以下文本:

This is some sentence
and the continuation of the sentence

我需要找到换行符,使其前面有一个单词,后面有一个单词,所以我使用以下正则表达式:

Regex rgx = new Regex("'w'n'w");

当我发现这种情况时,我只想用空格替换换行符。 所以输出将如下所示:

This is some sentence and the continuation of the sentence

可以这样做吗?

更新 12/11/14:

这个问题被标记为重复,但是,引用的解决方案并不完全是我想要的。 如上所述,它必须是在换行之前和前面有一个字符的场景。 引用的解决方案仅捕获所有"'"字符并将其替换为空字符串。

这是我问题的解决方案:

string input = "This is some sentence'nand the continuation of the sentence",
       pattern = @"('w)'n('w)",
       replacement = "$1 $2",
       output = string.Empty;
output = Regex.Replace(input, pattern, replacement);

其结果将是:

This is some sentence and the continuation of the sentence

我的解决方案受到此解决方案的启发。

替换部分正则表达式匹配

将绳子分开,然后用新的关节将其重新放在一起。你可以做这样的事情:

string input = "This is a sentence'nand the continuation of the sentence.'n'nLet's go for'na second time.";
var rx = new Regex(@"'w('n)'w");
var output = new StringBuilder();
int marker = 0;
var allMatches = rx.Matches(input);
foreach (var match in allMatches.Cast<Match>())
{
    output.Append(input.Substring(marker, match.Groups[1].Index - marker));
    output.Append(" ");
    marker = match.Groups[1].Index + match.Groups[1].Length;
}
output.Append(input.Substring(marker, input.Length - marker));
Console.WriteLine(output.ToString());