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

Ex . У кошки 4 ноги. Осьминог имеет 8 ног. Паук имеет 6 ног.

Глядя между «кошкой» и первым периодом. "имеет 4 ноги".

Пробовал: кошка (? S) (. *). но это дает мне весь результат вплоть до последнего периода.

Также пробовал: (? <= Cat) (. *) (? =.), Но тоже результат.

0
Paul P 11 Фев 2020 в 04:43

3 ответа

Лучший ответ

Вы хотите ленивый квантификатор на .*, а также чтобы избежать периода:

cat(.*?\.)
1
Ryan M 11 Фев 2020 в 01:49

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

(?<=cat)[^.]*

В котором нет групп - ваша цель - все совпадение.

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

cat([^.]*)

И ваша цель захвачена как группа 1.

0
Bohemian 11 Фев 2020 в 06:09

Я использовал lookbehind =

(?<=cat)

И с нетерпением

(?=\. ) 

С ленивым квантификатором: (.*?)

Если бы тогда использовался только (. *), Он бы соответствовал:

имеет 4 ноги. Осьминог имеет 8 ног

Regex, который будет работать:

(? <= кошка) (. *?) (? =.)

Смотрите этот аналогичный ответ: Regex Совпадение всех символов между двумя строками

0
sumon c 11 Фев 2020 в 05:40