假设我有一个正则表达式集合
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/