Получить все подстроки между двумя разными начальными и конечными разделителями - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь в Python 3 получить список всех подстрок данной строки a, которые начинаются после разделителя x и заканчиваются непосредственно перед разделителем y. Я нашел решения, которые получают меня только в первый раз, но результатом должен быть список всех случаев.

start = '>'
end = '</'
s = '<script>a=eval;b=alert;a(b(/XSS/.source));</script><script>a=eval;b=alert;a(b(/XSS/.source));</script>'"><marquee><h1>XSS by Xylitol</h1></marquee>'
print((s.split(start))[1].split(end)[0])

приведенный выше пример - это то, что я получил до сих пор. Но я ищу более элегантный и стабильный способ получить все случаи.

Таким образом, ожидаемый возврат в виде списка будет содержать код javascript в виде следующих записей:

a=eval;b=alert;a(b(/XSS/.source));
a=eval;b=alert;a(b(/XSS/.source));

1 Ответ

1 голос
/ 23 апреля 2020

Поиск шаблонов в строках кажется хорошей работой для регулярных выражений. Это должно вернуть список чего-либо между парой <script> и </script>:

import re
pattern = re.compile(r'<script>(.*?)</script>')
s = '<script>a=eval;b=alert;a(b(/XSS/.source));</script><script>a=eval;b=alert;a(b(/XSS/.source));</script>\'"><marquee><h1>XSS by Xylitol</h1></marquee>'
print(pattern.findall(s))

Результат:

['a=eval;b=alert;a(b(/XSS/.source));', 'a=eval;b=alert;a(b(/XSS/.source));']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...