正则表达式匹配不起作用

时间:2010-03-17 09:09:03

标签: c# regex

我有一个字符串 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);

2 个答案:

答案 0 :(得分:4)

,/字符不会与\w匹配。 \w仅匹配字母,数字和下划线。

最好使用[^;]+获取除;之外的所有内容,以便您尝试执行此操作:

new Regex(@"\b(?<test>\w+):(?<com>[^;]+);(?<p1>[^;]+);(?<p2>[^;]+)");

我单独离开test捕获组,假设它始终为[a-zA-Z0-9_]+

答案 1 :(得分:1)

如果您的令牌本身不能包含:;,则可以在正则表达式上进行拆分:[:;]