2012-04-30 2 views
0

Я пытаюсь получить определенную строку с выражением регулярного выражения из предложения. Это моя первая Regex:Получение определенной строки из предложения с использованием регулярных выражений

Regex Reg = new Regex(@"^[KB|kb](\w+)[-]?(\w+)$"); 

    From input of : 
    word word word (KB92922-WMP9) word. 
    word word word (KB929222910) word word. 
    word word kb28928282 word word. 

Он должен быть в состоянии получить:

KB92922-WMP9 
    KB929222910 
    kb28928282 

Рассматривайте их как предложения, и мы получаем данные, передавая предложение по одному. Извлечение данных без круглых скобок.

Как это будет работать? Понятия не имею. Я думаю, что у меня есть выражение Regex Expression, но я не уверен, как получить данные.

+0

Пожалуйста, не префикс своих названий с "C# -" и тому подобными. Для чего нужны теги. –

+0

Я нахожу это очень полезным при тестировании регулярных выражений: http: //derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx –

ответ

1

Вы ищете Regex.Matches, (предполагая, что одно предложение может содержать как KB12345, так и KB98765). он похож на Regex.Match, но даст вам все соответствующие подстроки.

Если у вас есть весь текст в виде одной строки, вероятно, нет необходимости разбить его на предложения. Просто получение всех совпадений во всей строке даст вам тот же результат, что и сбор всех совпадений во всех предложениях внутри одной строки.

Edit: обновление регулярного выражения вы используете

Regex Reg = new Regex(@"(KB\d+(?:-[\w\d]+)?)", RegexOptions.IgnoreCase); 
+0

Спасибо человеку! Работал сразу – user919789