Как сделать, чтобы регулярное выражение, которое пропускало некоторый текст, чтобы соответствовать определенному слову, совпадало только один раз? - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть регулярное выражение, которое пропускает некоторые слова, чтобы соответствовать определенному слову.Я хочу, чтобы оно соответствовало только первому вхождению этого конкретного слова.

Например,

У меня есть регулярное выражение (full)(\s+\S+){0,10}?\s+(amount), и мой образец текста

отвечает за полную сумму, но только за доступ к полной сумме

Результат указанного выше совпадения:

полная сумма
полная сумма

Я хочу только первое вхождение full amount

1 Ответ

0 голосов
/ 17 апреля 2019

Используя часть, чтобы пропустить некоторые слова, вы можете использовать и закрепить ^, чтобы подтвердить начало строки и сопоставить любой символ 0+ раз, не жадный, используя .*?

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

^.*?\b(full)(?:\s+\S+){0,10}?\s+(amount)\b

Regex demo | C # демо

Например:

String str = @"liable for full amount but only in access of the full amount";
Match m = Regex.Match(str, @"^.*?(full)(?:\s+\S+){0,10}?\s+(amount)");      
Console.WriteLine("{0} {1}", m.Groups[1].Value, m.Groups[2].Value); 

Результат:

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