获取两个不同的开始和结束定界符之间的所有子字符串

问题描述 投票:0回答:1

我正在Python 3中尝试获取给定String 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));
python html substring string-matching
1个回答
1
投票

查找字符串中的模式对于正则表达式来说似乎是一项不错的工作。这应该返回在<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));']
© www.soinside.com 2019 - 2024. All rights reserved.