Регулярное выражение для возврата только первого результата из нескольких совпадений

Использование c# vs2008 регулярного выражения

Я пытаюсь получить число из очень длинной строки, загруженной из текста из файла.

В этой исходной строке есть несколько экземпляров данных, которые я хочу получить.
Например. «Налоговая накладная № INV1870507» может повторяться 10 раз в источнике String с любым неизвестным количеством символов между совпадениями. Я хочу получить номер "1870507". Номер разный для каждого файла, который я загружаю, и мне нужно найти, что это за номер.

Используя этот шаблон: (?<=Tax Invoice No[\s\r\n]+INV)(?'InvNo'[^\s\r\n]+)? я могу правильно найти совпадение в каждом случае и могу прочитать число.

Но у меня получается 10 матчей и 10 групп.

Я хочу, чтобы Regex замкнуло при первом совпадении и вернуло только 1 совпадение, потому что тогда у меня есть нужная мне информация, и нет необходимости продолжать сопоставление.

Кто-нибудь может посоветовать?


person Spooky2010    schedule 04.01.2012    source источник
comment
см. stackoverflow.com/questions/2631183/   -  person Hemant Metalia    schedule 04.01.2012


Ответы (1)


Вы хотите использовать это для С#, поэтому вы можете просто использовать:

Regex regex = new Regex("(?<=Tax Invoice No[\s\r\n]+INV)(?'InvNo'[^\s\r\n]+)?");
regex.Match(myString);

Соответствие: ищет во входной строке первое вхождение регулярного выражения...

Это должно на самом деле делать то, что вы хотите.

person Feroc    schedule 04.01.2012