用正则表达式和 C# 替换文本并没有按照我需要的方式工作
本文关键字:工作 方式 正则表达式 替换 并没有 文本 | 更新日期: 2023-09-27 18:22:15
我正在寻找一种方法来遍历字符串并替换所有实例,其中第二和第三个字符总是不同的,但其余的将是相同的。例如,如果我有:
"ú07ú" to be replaced with "ú07 ú"
"ú1Eú" to be replaced with "ú1E ú"
"ú12ú" to be replaced with "ú12 ú"
我知道我应该使用正则表达式,但它们让我感到困惑。我很确定语法是这样的:
Content = Regex.Replace(Content, @"ú...", “ú.. ú");
但显然这是行不通的。请问任何正则表达式大师可以伸出援手吗?
谢谢
看起来你想要:
Content = Regex.Replace(Content, @"ú([^ú]+)ú", @"ú$1 ú");
此正则表达式:
ú([^ú]+)ú
意思是:匹配 ú,然后至少一个不是 ú 的字符(并捕获这部分(,然后是另一个 ú。如果希望它只匹配中间的两个字符,请将[^ú]+
更改为[^ú]{2}
然后我们将整个内容替换为:
ú$1 ú
即:ú,然后是字符串的捕获部分,然后是一个空格,然后再次是ú。
我对 C# 完全不熟悉,但从正则表达式的角度来看,您需要捕获组。
"呃..."需要是"(ú...(.)'"和"ú.ú" 需要为"$1 $2",假设 C# 使用标准正则表达式表示法来捕获组。
[TestMethod]
public void regex_test()
{
string expr = @"(?<firstThree>.{3})(?<lastOne>.{1})";
string replace = "${firstThree} ${lastOne}";
string first = "u84u";
string firstResult = "u84 u";
Assert.AreEqual<string>(firstResult, Regex.Replace(first, expr, replace));
}