[英]Pattern extract using Regex in Python
我正在嘗試在 python 中使用正則表達式進行單詞提取,因為我是初學者並且沒有正則表達式經驗我希望你幫助我,我有這個字符串:
Deadline for NSF-BSF programs in Elementary Particle Physics – Theory; Particle Astrophysics and Cosmology – Theory; Quantum Information Science (NSF deadline is Dec. 14)
我希望 output 成為這個詞中的區域或研究列表,所以 output 應該是:
[Elementary Particle Physics, Particle Astrophysics and Cosmology, Quantum Information Science]
任何人都可以使用re.findall()
給出正則表達式來識別這種模式。 提前致謝!
您必須考慮弄清楚是什么連接了您要搜索的元素。 正則表達式依賴於模式識別。 常規意義
- 排列成或構成恆定或確定的模式,尤其是在各個實例之間具有相同的空間。
- 以均勻的間隔重復出現。
鑒於此,您的問題不容易解決,因為您的來源不是“常規”
也就是說,在一種情況下,您正在尋找任何以'- Theory;'
結尾的東西。 然而,“任何東西”過於寬泛。 您如何區分匹配"Deadline for NSF-BSF programs in Elementary Particle Physics – Theory;"
以及您要查找的匹配項是Elementary Particle Physics
您的結果不符合統一的模式,例如, Elementary Particle Physics
是三個單詞,而Particle Astrophysics and Cosmology
是 4 個單詞。
鑒於缺乏constant or definite pattern
,我不知道這是正則表達式真正可以幫助您的東西。
當然假設(1) ' in '
是您感興趣的單詞正在開始的指示符,並且(2)所有區域都用';'
分隔並且 (3) 所有區域都以- Theory
或括號中的內容結尾,我們可以獲得您要查找的列表。 但是,如果預期以下代碼有效,這些假設必須在所有輸入源中保持一致。
import re
src = "Deadline for NSF-BSF programs in Elementary Particle Physics - Theory; " \
"Particle Astrophysics and Cosmology - Theory; " \
"Quantum Information Science (NSF deadline is Dec. 14)"
_, out = src.split(' in ')
out = [re.split(r'( - Theory)|\(.*\)', o)[0].strip() for o in out.split(';')]
print(out)
正則表達式很棒……有時解釋一些正則表達式的優點和缺點。 此答案的摘錄何時不應使用正則表達式? , 強調解析人類寫作通常不是正則表達式的好用法。
一個很好的例子是淫穢過濾器。 不僅一般來說實現它是一個壞主意,而且您可能很想使用正則表達式來實現它,而且您會做錯。 一個人可以用很多方法寫一個單詞、一個數字、一個句子,並且會被另一個人理解,但不是你的正則表達式。 因此,您的正則表達式不會抓住真正的淫穢內容,而是會花時間傷害其他用戶。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.