Самый маленький шаблон для извлечения строкового значения с использованием RegEx - PullRequest
1 голос
/ 23 ноября 2010

Я пытаюсь создать экземпляр регулярного выражения с правильным шаблоном для получения только правильного значения строки.Мой текстовый файл имеет:

Comment ID : 1234.5

, и я хотел бы получить правильное значение следующим образом:

1234.5

Каким будет правильный шаблон Regex?

здесьчто у меня есть до сих пор

new Regex(@"^Comment ID\s*:\s*(?<comment_id>\w+)", RegexOptions.Multiline | RegexOptions.IgnoreCase); 

Но это также приводит к ненужной строке "Идентификатор комментария"

Можно ли не использовать маркер группы <comment_id>?

Ответы [ 4 ]

1 голос
/ 23 ноября 2010

Вам не нужно использовать имена групп - но тогда вам придется ссылаться на них по индексам. Если левая часть строки не может содержать «:», тогда регулярное выражение может быть:

^[^:]+:\s*(.*?)\s*$

Также вы можете использовать метод intance String.Split ():

"abc : def".Split(new[] { ':' }, 2)
0 голосов
/ 23 ноября 2010

Указанное вами регулярное выражение "^Comment ID\s*:\s*(?<comment_id>\w+)" не соответствует числам после точки

Попробуйте использовать это: (?!^Comment ID\s*:\s*)(?<comment_id>\d+\.*\d*)

Также вы можете изменить идентификатор комментария на любое слово или \ w +

0 голосов
/ 23 ноября 2010

(? <= ID комментария: \ s *) [^ \ s] + </p>

0 голосов
/ 23 ноября 2010

Если вам все равно, что осталось от :, вы можете просто использовать:

"^.*:\s*(?<comment_id>\w+)"

Вам также не понадобится использовать RegexOptions для этого, поскольку нет строк, чтобы игнорировать регистр

...