Как сопоставить и захватить регулярное выражение в C # - PullRequest
1 голос
/ 07 июля 2010

У меня есть регулярное выражение, подобное этому

something (.*) someotherthing

Как использовать объект Regex для сопоставления всего выражения и получения значения захвата?

Ответы [ 3 ]

3 голосов
/ 07 июля 2010

Вот пример того, о чем я думаю, вы просите:

Match m = Regex.Match( "something some stuff in the middle someotherthing", 
         "something (.*) someotherthing" );
if ( m.Success )
   Console.WriteLine( "groups={0}, entire match={1}, first group={2}", 
                      m.Groups.Count, m.Groups[0].Value, 
                      m.Groups[1].Value );
2 голосов
/ 07 июля 2010

Если вы можете использовать $1 для получения этой группы, вы можете использовать $0 для получения всего выражения.

Это работает в большинстве вариантов регулярных выражений (может быть \0 или %0 иличто угодно), а не только C #.

Аналогично, свойство Match.Groups должно работать с 0 в качестве аргумента для возврата всего совпадения, в противном случае Capture.Value выглядиткак будто содержит совпадение.

Также стоит отметить, что для того, чтобы убедиться, что ваша тестовая строка соответствует выражению whole , обычно рекомендуется использовать префикс ^ и суффикс $, которые являются якорями нулевой ширины для начала и конца строки,(Также начало / конец строки в многострочном режиме.)

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