2013-11-27 30 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更新代码... –

相关问题