2013-11-27 32 views
1

我寫了一個模式我的正則表達式模式有什麼問題?

string pattern2 = @"(?[<ports>\w+,*]*)"; 

這種模式將有助於未來格式

[port1, port2_4][portN_][port,port2,port5,p0_p1] 

的解析字符串解析,我想有一個字符串數組後:

1. port1, port2_4 
2. portN_ 
3. port, port2,port5,p0_p1 
+0

開頭的問號是什麼意思? – zerkms

+0

據我瞭解,這意味着組的開始 – pipsik

+0

你能寫一些更有建設性的意見嗎?如果你知道如何改變我的任務模式,請寫下你的模式 – pipsik

回答

2

這將工作...

(?<=\[)(?<ports>.*?)(?=\]) 
  • (?<=\[)的前綴[但不包括在比賽
  • (?<ports>.*?)命名捕獲「端口」匹配任何非貪婪(少 可能)
  • (?=\])]後綴,但不包括在比賽

代碼: -

Regex regex = new Regex(@"(?<=\[)(?<ports>.*?)(?=\])"); 
var m = regex.Matches("[port1, port2_4][portN_][port,port2,port5,p0_p1]"); 
foreach (var p in m) 
{ 
    Console.WriteLine(p); 
} 

輸出:

port1, port2_4 
portN_ 
port,port2,port5,p0_p1 
+0

portNames總是在括號內[]。端口名稱可以用「,」分隔。請檢查我的例子,在我的主要職位 – pipsik

+0

肯定....但那會工作.... –

+0

@pipsik更新代碼... –

相關問題