替换部分正则表达式匹配
本文关键字:正则表达式 替换部 | 更新日期: 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());