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

2024-06-02 06:43:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在Python3中获得给定字符串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])

上面的例子就是我到目前为止得到的。但我正在寻找一种更优雅、更稳定的方式来获取所有事件

因此,预期的return as list将包含javascript代码,如下所示:

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

Tags: 字符串source列表evalscriptalert解决方案h1
1条回答
网友
1楼 · 发布于 2024-06-02 06:43:27

对于正则表达式来说,在字符串中寻找模式似乎是一项体面的工作。 这将返回一对<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));']

相关问题 更多 >