Регулярное выражение для захвата первых двух строк, которые не содержат строки - PullRequest
1 голос
/ 16 апреля 2019

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

Если мы возьмем этот адрес:

Название компании
Некоторые дороги
Некоторые города

Я могу использовать регулярное выражение (?:.*\s*){2} для возврата

Название компании Some Road

Что здорово.

Однако, если в верхней части есть дополнительная строка, адрес становится:

Кредиторская задолженность
Название компании
Some Road
Какой-то город

Тогда он больше не забирает те две строки, которые мне нужны.

Я попробовал метод здесь: Регулярное выражение для соответствиястрока, которая не содержит слова? , но безуспешно, а также пробовала комбинации с использованием таких вещей, как (?!Account.*)(?:.*\s*){3}, но добилась небольшого успеха.

Веб-сайт Microsoft https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-referenceесть масса символов и т. д., но мне пока не удалось заставить работать комбинацию.

Самое близкое, что у меня было, это использование [^Account.*](?:.*\s*){3}, которое возвращает

s Название компании к оплате Некая дорога

Я просто не могу ее получитьудалить остальную часть этой строки!Любая помощь будет оценена.Спасибо.

1 Ответ

1 голос
/ 16 апреля 2019

Вы можете использовать ^ с включенным многострочным режимом:

(?m)^(?!Accounts)(?:.*\n?){2}

или (немного более эффективно и с учетом передового опыта):

(?m)^(?!Accounts).*(?:\n.*)?

См. regex demo и это regex demo .

Когда к шаблону добавляется (?m), ^ соответствует началу строки и целомусовпадения с шаблоном

  • ^ - начало строки
  • (?!Accounts) - без Accounts в качестве первого слова
  • (?:.*\n?){2} - два вхождениялюбых 0+ символов кроме символов разрыва строки, за которыми следует необязательный символ новой строки
  • .*(?:\n.*)? - соответствует строке и необязательной последующей строке.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...