创建正则表达式以匹配以下情况

时间:2018-08-27 01:49:42

标签: python regex grep

我是一名学生,正在从事一个小型研究项目,在这个项目中,我需要抓取符合以下要求的网页:- 如果在文本的任何位置都发现单词X说“ abc”,则查找模式Y如果出现在出现X的两侧的25个字符的窗口中,则说“ pqr”。 例如

pqrxyz有效。

xyz无效。

xyzpqr有效。

pqr123456789123456789123456789xyz无效。

我不知道这一点。任何帮助将不胜感激。

((?=pqr).{20,}abc) | (pqr{20,}(?!abc))

到目前为止,这是我的尝试。我不知道如何合并20个字符的窗口约束。

2 个答案:

答案 0 :(得分:0)

.是“任何单个字符”的正则表达式。

{n,m}是“至少前n个正则表达式的重复,且不超过m个重复”的正则表达式。

因此,正则表达式xyz.{0,25}pqr的意思是“ xyz,后跟最多25个字符,后跟pqr”。

因此,考虑到pqrxyz之前或之后发生的可能性,我们得到以下这行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的答案提供了更多有关正则表达式中特定元素的详细信息。

Regular expression visualization