C#是否有一种自然的方法来检查单个字符串和多个正则表达式的正则表达式匹配,单个通过字符串?

时间:2018-03-22 22:50:50

标签: 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)))

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

1 个答案:

答案 0 :(得分:2)

您可以在Regex中使用匹配组以及OR:

(abc)|(ghi)

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

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