簡體   English   中英

找到第一個模式后在新行上匹配模式?

[英]Match pattern on new lines after first pattern is found?

我有以下代表性數據:

Lots of text, lots of text
PATTERN2
PATTERN2
text PATTERN1 text
text
text
..
..
text
PATTERN2
PATTERN2
PATTERN2
PATTERN2
PATTERN2
..
..
PATTERN2

基本上我想捕獲 PATTERN2 的所有實例,但只有在 PATTERN1 出現在文件中之后。

PATTERN1 是幾個字符,而 PATTERN2 以時間戳 (HH:MM:SS.sss) 開頭,我需要在找到 PATTERN2 時捕獲整行。 還值得注意的是 PATTERN2 出現在整個 txt 文件中,但我只想在找到 PATTERN1 之后匹配 PATTERN2。

我嘗試了各種正則表達式(我是新手並且正在摸索)但無濟於事,我正在使用https://regexr.com/https://regex101.Z4D0Z56D9A2D102進行測試將在 Python 腳本中使用。

任何幫助將不勝感激!

一種方法是明智地使用基本字符串函數:

inp = """Lots of text, lots of text
PATTERN2
PATTERN2
text PATTERN1 text
text
text
..
..
text
PATTERN2
PATTERN2
PATTERN2
PATTERN2
PATTERN2
..
..
PATTERN2"""

matches = []
if re.search(r'\bPATTERN1\b', inp):
    text = re.split(r'\bPATTERN1\b', inp, 1)[1]
    matches = re.findall(r'\bPATTERN2\b', text)

print(matches)
# ['PATTERN2', 'PATTERN2', 'PATTERN2', 'PATTERN2', 'PATTERN2', 'PATTERN2']

在這里,我們首先檢查輸入文本是否包含PATTERN1標記。 如果不是,則沒有匹配項,否則,我們進行正則表達式拆分以查找在第一次PATTERN1出現之后出現的文本。 最后, re.findall會在此目標文本中找到所有PATTERN1出現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM