为了使代码更清晰,我希望多次将我的partern与;
作为分隔符的字符串匹配。
现在,我这样分开;
。
string[] argD = _input.Split(';');
所以实际的正则表达式工作正常。但我想知道我是否可以消除Split
。
1d2;1d6
和
1d2
这种模式让我匹配1d2
^(\d+)d(\d+)?$
现在我正在分裂;
,然后我应用正则表达式
[ [ 1 , 2 ] , [ 1, 6 ] ]
[ [ 1 , 2 ] ]
int cpt = 0;
string uni = "1d2";
string multi = "1d2;1d8";
MatchCollection RegexMatchUni = Regex.Matches(uni, @"^(\d+)d(\d+)?$");
MatchCollection RegexMatchMulti = Regex.Matches(multi, @"^(\d+)d(\d+)?$");
Console.WriteLine("<TEST UNI>");
foreach (Match m in RegexMatchUni){
cpt++;
Console.WriteLine("{0}: {1}d{2}"
, cpt
, m.Groups[1].Value
, m.Groups[2].Value);
var temp = m.Groups[1].Value;
}
Console.WriteLine("\n<TEST MULTI>");
cpt = 0;
foreach (Match m in RegexMatchMulti){
cpt++;
Console.WriteLine("{0}: {1}d{2}"
, cpt
, m.Groups[1].Value
, m.Groups[2].Value);
}
答案 0 :(得分:2)
从多重正则表达式中删除^
和$
字符,它将开始工作。这些字符强制正则表达式仅匹配整个字符串,而不是子字符串。