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