gpt4 book ai didi

c# - 使用匹配和正则表达式

转载 作者:太空狗 更新时间:2023-10-29 23:17:06 26 4
gpt4 key购买 nike

我正在从事一个解析传入文本文件的项目。我正在学习 C#。我目前挑选我需要的信息的方法是这样的:

string MyMatchString = @"a pattern to match";
Match MyMatch = Regex.Match(somestringinput, MyMatchString);
if (MyMatch.Succes)
{
DoSomething(MyMatch.Value);
}

我正在做很多这样的事情。我希望能够一步结合比赛和成功测试。查看类列表,Regex 有一个 IsMatch() 方法,但似乎我无法访问匹配的值(假设它成功)。我想我需要一个 Match 实例。我试过了

if ((Match MyMatch = Regex.Match(somestringinput, MyMatchString).Success)

当然有一个编译错误。

我在考虑采用匹配模式的静态方法,输入然后返回 bool 值是可行的方法。然后我可以测试是否成功,如果成功则获取匹配的值。

最佳答案

好吧,你可以为 Regex 编写一个扩展方法,它会给你一些力量。诀窍是在不运行正则表达式匹配两次的情况下执行此操作,这可能会影响您的性能(注意:这尚未经过测试,并且与您的想法不同,因为它需要现成的 Regex 对象才能工作)。

public static class RegexExtensions {
public static bool GetMatch(this Regex regex, string input, out string matched) {
Match match = regex.Match(input);
if (match.Success) {
matched = match.Value;
return true;
}
matched = null;
return false;
}
}

所以你会做类似的事情

string matched;
Regex regex = new Regex(pattern);
if (regex.GetMatch(inputstring, matched))
{ /* do something with 'matched' */ }
else
{ /* no match, 'matched' is null */ }

您可能更愿意在失败情况下只返回 null,否则返回字符串,并省去 bool 值和输出参数。

关于c# - 使用匹配和正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9263659/

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