gpt4 book ai didi

c# - 正则表达式替换除特定模式之外的所有内容

转载 作者:行者123 更新时间:2023-12-01 19:38:54 27 4
gpt4 key购买 nike

我正在寻找提取:

50%

来自或多或少具有这种格式的字符串:

50% 就在这里的某个地方。

我还想提取:

50%50%25%

来自这样的字符串:

50% 的 50% 是 25%

Regex.Match() 似乎是明显的竞争者。但是,这涉及检查是否找到任何匹配项(例如 match.Success)、从数组中的特定索引中提取结果和/或解决越界索引的风险。

正则表达式替换通常更容易应用。一行就可以完成这项工作,包括返回结果字符串。对于许多语言来说都是如此。

结果 = Regex.Replace(input, stuffWeDontLike, "")

基本上,我正在寻找正则表达式过滤器 - 我不想输入模式来替换,而是输入模式检索 .

percentages = Regex.Filter("50% of 50% is 25%", "[0-9]+\%")

我们可以形成一个正则表达式并反转结果,就像它是一个选择一样吗?这将允许使用正则表达式替换。但是,我找不到一种轻松反转正则表达式的方法。

我们如何使用非常短且简单的语法(类似于正则表达式替换)来实现所需的结果(或类似的结果;连接等似乎可以接受)?

最佳答案

您可以使用Regex.Matches并连接每个匹配结果。请选择您最喜欢的一个。

//Sadly, we can't extend the Regex class
public class RegExp
{
//usage : RegExp.Filter("50% of 50% is 25%", @"[0-9]+\%")
public static string Filter(string input, string pattern)
{
return Regex.Matches(input, pattern).Cast<Match>()
.Aggregate(string.Empty, (a,m) => a += m.Value);
}
}

public static class StringExtension
{
//usage : "50% of 50% is 25%".Filter(@"[0-9]+\%")
public static string Filter(this string input, string pattern)
{
return Regex.Matches(input, pattern).Cast<Match>()
.Aggregate(string.Empty, (a,m) => a += m.Value);
}
}

关于c# - 正则表达式替换除特定模式之外的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27967673/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com