2017-09-03 56 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