Skip to main content
 首页 » 编程设计

c#之正则表达式拆分

2024年01月22日23artech

我想分割一个字符串,例如

"[1-5]?3456[2-5][4-D]" 


至

array[0] = "[1-5]" 
array[1] = "?" 
array[2] = "3" 
array[3] = "4" 
array[4] = "5" 
array[5] = "6" 
array[6] = "[2-5]" 
array[7] = "[4-D]" 


有人可以告诉我使用正则表达式拆分是否可行?

我得到了三个元素“ 3”个字母(可以是1-9和A-F,“?”一个白卡,“ [1-5]”一个范围(相同的1-9 + A-F)

编辑:匹配的示例是

"[1-5]?3456[2-5][4-D]" 
 
"?4A9[1-F]?[A-D]1" 
 
"12459987" 
 
"[1-F][1-F][1-F][1-F][1-F][1-F][1-F][1-F]" 

请您参考如下方法:

用Expresso测试:

(\[[^]]+\])|. 


要使用此表达式获取拆分,可以使用以下代码:

var input = "[1-5]?3456[2-5][4-D]"; 
var pattern = new Regex(@"(\[[^]]+\])|(.)",  
                        RegexOptions.CultureInvariant | RegexOptions.Compiled); 
 
IEnumerable<string> parts = from m in pattern.Matches(input).Cast<Match>() 
                            select m.Captures[0].Value;