我是一名学生,正在从事一个小型研究项目,在这个项目中,我需要抓取符合以下要求的网页:- 如果在文本的任何位置都发现单词X说“ abc”,则查找模式Y如果出现在出现X的两侧的25个字符的窗口中,则说“ pqr”。 例如
pqrxyz
有效。
xyz
无效。
xyzpqr
有效。
pqr123456789123456789123456789xyz
无效。
我不知道这一点。任何帮助将不胜感激。
((?=pqr).{20,}abc) | (pqr{20,}(?!abc))
到目前为止,这是我的尝试。我不知道如何合并20个字符的窗口约束。
答案 0 :(得分:0)
.
是“任何单个字符”的正则表达式。
{n,m}
是“至少前n个正则表达式的重复,且不超过m个重复”的正则表达式。
因此,正则表达式xyz.{0,25}pqr
的意思是“ xyz
,后跟最多25个字符,后跟pqr
”。
因此,考虑到pqr
在xyz
之前或之后发生的可能性,我们得到以下这行python代码:
if re.search('pqr.{0,25}xyz', line) or re.search('xyz.{0,25}pqr', line):
答案 1 :(得分:0)
类似的事情应该可以处理两种情况:
pqr.{,25}?xyz|xyz.{,25}?pqr
我使用Debuggex进行测试,我认为这是显示正则表达式工作原理的简便方法。
John的答案提供了更多有关正则表达式中特定元素的详细信息。