我一直想用正則運算式從下面的字串中提取月份名稱,盡管我的正則運算式在像 regex101 這樣的平臺上作業,但我似乎無法提取“八月”這個詞。
import re
s = "word\anyword\2021\August\202108_filename.csv"
re.findall("\d \\([[:alpha:]] )\\\d ", s)
這會導致以下錯誤:
錯誤:位置 17 的括號不平衡
根據之前處理相同錯誤的帖子的建議,我也嘗試過使用re.compile,re.escape但它們似乎都不起作用。
非常感謝任何幫助以及關于為什么這不起作用的一點解釋。
uj5u.com熱心網友回復:
您可以使用
import re
s = r"word\anyword\2021\August\202108_filename.csv"
m = re.search(r"\d \\([a-zA-Z] )\\\d ", s)
if m:
print(m.group(1))
請參閱Python 演示。
這里主要存在三個問題:
- 輸入字串應該與 regex101.com 使用的相同,即您需要確保在 Python 代碼中使用文字反斜杠,因此輸入文本和正則運算式都使用原始字串文字
- Python 不支持
rePOSIX 字符類,因此[[:alpha:]]應替換為某種等效模式,例如,[A-Za-z]或[^\W\d_] - 由于您似乎只期望一個匹配項(
August字串中只有一個(月份)名稱),因此您不需要re.findall,您可以使用re.search. 僅re.findall在需要從字串中提取多個匹配項時使用。
另外,請參閱這些帖子:
- Python 正則運算式 - r 前綴
- pythons re.compile(r' pattern flags') 中的“r”是什么意思?
- “u”和“r”字串標志到底是做什么的,什么是原始字串文字?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/457113.html
上一篇:回顧與消極回顧相結合
下一篇:具有特定標準問題的正則運算式
