2017-09-03 57 views
1

我正在尝试为输入文本创建正则表达式模式匹配。虽然我知道肯定的正则表达式工作: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: [email protected]\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; 
     } 
    } 

回答

3

你必须使用或在RegexOptions结合:

RegexOptions.Multiline | RegexOptions.IgnoreCase