我正在寻找提取:
50%
来自或多或少具有这种格式的字符串:
The 50% is in here somewhere.
我还想摘录一下:
50%50%25%
从这样的字符串:
50% of 50% is 25%
Regex.Match()
似乎是明显的竞争者。然而,这涉及检查是否找到任何匹配项(例如match.Success
),从数组中的特定索引中提取结果,和/或解决越界索引的风险。
正则表达式替换通常更容易应用。一行就可以完成这项工作,包括返回结果字符串。对于很多语言来说都是如此。
result = Regex.Replace(input, stuffWeDontLike, "")
基本上,我正在寻找一个正则表达式过滤器- 而不是输入模式replace,我想输入模式retrieve.
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);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)