我有一个字符串 ABCD:10,20 ,, 40; 1/1; 1 / 2,1 / 3,1 / 4 我想将字符串分成以下部分:< / p>
ABCD - 分裂:
10,20, - 40 - 被分裂;
1/1 - 分裂;
1 / 2,1 / 3,1 / 4 - 分裂;
为什么以下正则表达式对我不起作用?
string txt = @"ABCD:10,20,,40;1/1;1/2,1/3,1/4";
Regex reg = new Regex(@"\b(?<test>\w+):(?<com>\w+);(?<p1>\w+);(?<p2>\w+)");
Match match = reg.Match(txt);
答案 0 :(得分:4)
,
和/
字符不会与\w
匹配。 \w
仅匹配字母,数字和下划线。
最好使用[^;]+
获取除;
之外的所有内容,以便您尝试执行此操作:
new Regex(@"\b(?<test>\w+):(?<com>[^;]+);(?<p1>[^;]+);(?<p2>[^;]+)");
我单独离开test
捕获组,假设它始终为[a-zA-Z0-9_]+
。
答案 1 :(得分:1)
如果您的令牌本身不能包含:
和;
,则可以在正则表达式上进行拆分:[:;]