c# - C# 是否有一种自然的方法来检查单个字符串和多个正则表达式的正则表达式匹配,以及单次传递字符串?

标签 c# .net regex algorithm

假设我有一个正则表达式集合

IEnumerable<Regex> regexes = new[] { new Regex(@"\dpx"), new Regex(@"\dem"), new Regex(@"\dpt"), new Regex(@"\d%") };

和一个很长的字符串

string str = "n32kajnmnad ... "; // 1,000,000,000 chars long

C#/.NET 是否有任何自然的方法来检查是否包含任何正则表达式,只需一次传递字符串?

换句话说,我想要大约的东西。效率提高 4 倍

regexes.Any(r => r.IsMatch(str)))

如果可能的话,不要滚动我自己的算法。

最佳答案

您可以在正则表达式中将匹配组与 OR 一起使用:

(abc)|(ghi)

示例:https://regex101.com/r/FBYQLu/1

您也可以跳过这些组,但为了确保列表中的所有正则表达式都被处理,就好像它们是单独的一样(假设您在单个正则表达式中有一个 OR)。通过这些组,您可以看到哪些正则表达式通过了等等。

关于c# - C# 是否有一种自然的方法来检查单个字符串和多个正则表达式的正则表达式匹配,以及单次传递字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49439697/

相关文章:

c# - 移植 .NET 库以便在 UWP 应用程序中重用

regex - 用于提取以 '/' 为界的文本的正则表达式

javascript - 正则表达式匹配特定字符串开头结尾的任意字符

c# - 如何在应用程序启动时最大化 WPF 页面?

C# 多态性

c# - 等待多个可选任务

c# - 长度为 5 和 , 或 的 float 的正则表达式。分隔符

c# - Recaptcha 在 asp.net 中不起作用

c# - 它是否支持在 asp.net(C#) 中的多个服务器中的应用程序缓存?

.net - 有没有一种方法可以在不继承NUnit的情况下在测试类之间共享断言?