我正在決議一封電子郵件,該電子郵件使用 python 正則運算式可能會改變一些條件,該電子郵件正在訪問我的傳入服務器。這里的困難在于這些條件中的任何一個都必須與第一組匹配。我想出的正則運算式滿足大多數必要條件,但最終條件使我無法使用這個正則運算式:
from [LOC ]*[loc ]*0*(\d* [A-Z]{2} [A-Z]* *[A-Z]*)
以下是字串的變體,我必須使用我將在代碼片段中決議的內容從中提取我的資訊:
“等等等等等等,來自 LOC 0704 <2Char ABV> <LOCATION NAME>
回傳行之后的某個 URL”
“等等等等等等,來自 loc 0704 <2Char ABV> <LOCATION NAME>
回傳行后的某個 URL”
“等等等等等等,從 0704 <2Char ABV> <LOCATION NAME>
回傳行之后的某個 URL”
“等等等等,來自 LOC704 <2Char ABV> <LOCATION NAME>
回傳行后的某個 URL”
“等等等等等等,來自 LOC 0004 <2Char ABV> <LOCATION NAME WITH A SPACE IN IT>
回車行后的某個 URL”
“等等等等等等,來自 LOC 000 4 <2Char ABV> <LOCATION NAME WITH A SPACE IN IT>[0004] 回車行之后的某個 URL”
我們開始在“from”處讀取以下字串并查找可能存在的“LOC”或“loc”,并繼續讀取最多四位數字中的任何可能的前導零,并且僅捕獲第一個非零處的數字,直到我們到達位置名稱的結尾。
最后一個條件是我想捕獲所有這些東西,但排除字串末尾括號中的數字和它之前的任何前導空格,但仍然捕獲它是否存在。我覺得我離這里很近,但遺漏了一些重要的東西。
uj5u.com熱心網友回復:
使用不區分大小寫的匹配,您可以使用:
\bfrom\s (?:loc\s )?0*(\d \s [A-Z]{2}\s [A-Z] (?:\s [^][\s] ) )
解釋
\bfrom\s匹配 from 和空白字符(?:loc\s )?可選匹配 loc 和空白字符0*匹配可選的零(捕獲組 1\d \s匹配 1 個數字和空格字符[A-Z]{2}\s [A-Z]匹配 2 次 AZ、空白字符、1 個字符 AZ(?:\s [^][\s] )重復 1 次匹配空白字符和非空白字符,除了[和]
)關閉第 1 組
要匹配沒有換行符的空格,\s可以是[^\S\n]
正則運算式演示
要不匹配換行符并且只匹配到 http 或方括號之間的資料之前:
from[^\S\n] (?:loc\s )?0*(\d [^\S\n] [A-Z]{2}[^\S\n] [A-Z] (?:(?!\s*(?:\[[^][]*]|https?://)).)*)
正則運算式演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/358695.html
