c# - 模式匹配返回零计数

标签 c# regex

<分区>

我正在尝试为输入文本创建正则表达式模式匹配。虽然我确定正则表达式有效:https://regex101.com/r/EU7fXK/1我无法使用代码创建匹配项(计数> 0),即它不返回匹配项。不确定是什么原因。

我的代码是这样的

 static class Program
    {
        public static Regex Device { get; } = new Regex(@"\bdevice.*\b\W", RegexOptions.IgnoreCase & RegexOptions.Multiline);
        static void Main(string[] args)
        {
            var src =
                "!######################################################################################################\r\n!# APPROVED : YES\r\n!# REASON: test1 hosts in DMZ test1x access to update manager server to maintain securMuramaty, C1TEST1TEST1XX, test1xxx\r\n!# DEVICE: xxx test1 Devices\r\n!# SECTION: test1\r\n!# REQUESTER: test1@test1test2.com\r\n!# Exp. Date : 8/2016\r\n\r\naccess-list <Rule No> permMuramat tcp <IPaddress> <subnet mask> <IPaddress> <subnet mask> eq <Port Number>\r\naccess-list <Rule No> permMuramat tcp <IPaddress> <subnet mask> <IPaddress> <subnet mask> eq <Port Number>\r\naccess-list <Rule No> permMuramat tcp <IPaddress> <subnet mask> <IPaddress> <subnet mask> eq <Port Number>\r\naccess-list <Rule No> permMuramat <IPaddress> <subnet mask> <IPaddress> <subnet mask> eq <Port Number>\r\n";

            var devices = src.GetDevice();

        }

        public static List<XElement> GetDevice(this string input)
        {
            var pattern = Device;

            var matchCollection = pattern.Matches(input);

            var elements = new List<XElement>();

            foreach (Match match in matchCollection)
            {
                var val = match.Value;

                var element = new XElement("Device") { Value = val };

                elements.Add(element);
            }
            return elements;
        }
    }

最佳答案

您必须使用 OR 组合 RegexOptions:

RegexOptions.Multiline | RegexOptions.IgnoreCase

关于c# - 模式匹配返回零计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46023091/

相关文章:

c# - 单元测试内的方法内断言

javascript正则表达式不匹配一个词

regex - Perl Regex 正则表达式匹配字符串除外,不匹配字符串

c# - Outlook 升级时用户设置消失

C# 是否有内置函数可以将格式化的字符串转换回数字?

C# 无效问题

c# - 使用 LINQ to SQL 是否有助于防止 SQL 注入(inject)

c# - Linq2Xml 删除特定属性名称及其值

regex - 避免匹配正则表达式中的转义字符

c# - "111 -> c:\my source\file1.cpp (no code)"的正则表达式 (C#)