совпадение с регулярным выражением не работает - PullRequest
0 голосов
/ 17 марта 2010

У меня есть строка ABCD: 10,20, 40; 1/1; 1 / 2,1 / 3,1 / 4 Я хочу разбить строку на следующие части:

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 ]

4 голосов
/ 17 марта 2010

Символы , и / не будут совпадать с \w. \w соответствует только буквам, цифрам и подчеркиванию.

Лучше использовать [^;]+, чтобы получить все, но ; для того, что вы пытаетесь сделать:

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

Я оставил группу захвата test в одиночку, предполагая, что она всегда будет [a-zA-Z0-9_]+.

1 голос
/ 17 марта 2010

Если ваши токены не могут содержать : и ; сами, вы можете просто разделить на регулярное выражение: [:;]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...