Поиск текста среди html кода через регулярное выражение
Контекст: Делаю автотест на RobotFramework. У меня есть элемент с текстом, ссылками. Там достаточно рандомные комбинации тегов (так как у элемента разные состояния. Как решение поставил следующую задачу: надо найти регулярным выражением кириллический текст из тегов в html (теги могут иметь случайные названия), теги расположены должны быть между словами keyboard_arrow_down и keyboard_arrow_up. Мое решение:
(?=>([А-я, - ]+)<(?!((.|\n){0,100})keyboard_arrow_down)(?:.|\n){0,1500}keyboard_arrow_up)
Но оно не всегда находит нужные строки. Вот пример, когда срабатывает: https://regex101.com/r/OkW05O/3
<!doctype html>
<html data-critters-container>
<head>
<meta charset="utf-8">
<title>keyboard_arrow_down</title>
<base href="/">
<meta name="viewport" content="width=1300px, maximum-scale=1.5">
<meta http-equiv="X-UA-Compatible" content="НЕ ДОЛЖНО НАЙТИ">
<Test2>Должно найти<Test3><Test2>
<Test>Должно найти</Test>
<noscript>
keyboard_arrow_up
</noscript>
Ответы (1 шт):
Автор решения: Виталий
→ Ссылка
Я нашел ошибку. Правильное регулярное выражение в итоге:
(?=>([А-я, - ]+)<(?!((.|\n){0,1500})keyboard_arrow_down)(?:.|\n){0,1500}keyboard_arrow_up)