我想從一個文本檔案中提取與幾個類別有關的資料(除了類別A和B)。子串的格式將是這樣的:
在C類之前的一些文本 這是我所知道的屬于類別的一些文本
為了處理上述情況,排除A類和B類的資料,我有一個簡單的負數查找后綴詞,即
(?<! Category A ) (?<! 類別 B )這是 一些 文本 我知道的
然而,我也有一些有限的情況,文本中的Category A/B后面會有幾個字符(最多5個)。例如:
一些文本A類1.這是我所知道的一些屬于類別的文本
所以我試著把重碼改成:
(?<!Category A.{5})(?<!Category B. {5})這是一些文字我所知道的
在CatA/B之后正好有5個字符,它可以正常作業,但不允許我將{5}改為{0,5},并抱怨說:
量化器沒有固定我怎樣才能讓這個問題得到解決?
uj5u.com熱心網友回復:
PyPi regex拯救:
import regex pattern = r"(?<!Category A.{0,5})(?<!Category B.{0,5})這是我所知道的一些文本"。 print(regex.findall(pattern, "this is some text I'm aware of")檔案:
變數長度lookbehind
一個lookbehind可以匹配一個可變長度的字串。
參見Python證明
uj5u.com熱心網友回復:
使用Python re,如果你想匹配Category后面的大寫字母,除了A和B,你可以匹配C-Z后面的0-5個字符,并在一個捕獲組中捕獲文本。
Category [C-Z].{0,5}(這個是一些我所知道的文本轉載請註明出處,本文鏈接:https://www.uj5u.com/net/323774.html
標籤:
