簡體   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