繁体   English   中英

创建正则表达式以匹配以下场景

[英]Creating a regex to match the following scenario

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

pqrxyz有效。

xyz无效。

xyzpqr有效。

pqr123456789123456789123456789xyz无效。

我想不通。 任何帮助将不胜感激。

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

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

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

{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):

这样的事情应该可以工作,处理两种情况: pqr.{,25}?xyz|xyz.{,25}?pqr

我使用Debuggex进行测试,我认为这是展示正则表达式如何工作的一种简单方法。

约翰的回答提供了有关正则表达式中特定元素的更多详细信息。

正则表达式可视化

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM