我们说我有一组正则表达式
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是否有任何自然的方法来检查是否包含任何正则表达式,只需单次传递字符串?
换句话说,我想要一些东西。 如果可能的话,不要滚动我自己的算法。regexes.Any(r => r.IsMatch(str)))
答案 0 :(得分:2)
您可以在Regex中使用匹配组以及OR:
(abc)|(ghi)
示例:https://regex101.com/r/FBYQLu/1
您也可以跳过这些组,但要确保列表中的所有正则表达式都被处理,就好像它们是独立的一样(假设您在单个正则表达式中有OR)。通过这些组,你可以看到哪个正则表达式通过等。