Regex, чтобы получить соответствие из строки в следующий период - PullRequest
0 голосов
/ 11 февраля 2020

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

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

Глядя, чтобы попасть между «кошкой» и первым периодом. 'имеет 4 ноги.'

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

Также пробовал: (? <= cat) (. *) (? =.), но также тот же результат. </p>

Ответы [ 3 ]

1 голос
/ 11 февраля 2020

Требуется ленивый квантификатор на .*, а также экранирование от периода:

cat(.*?\.)
0 голосов
/ 11 февраля 2020

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

(?<=cat)[^.]*

без групп - все совпадение является вашей целью.

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

cat([^.]*)

и ваша цель попадает в группу 1.

0 голосов
/ 11 февраля 2020

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

(?<=cat)

и lookahead

(?=\. ) 

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

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

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

Регулярное выражение, которое будет работать:

(? <= Cat) (. *?) (? =.) </p>

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

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