簡體   English   中英

在 Python 中使用正則表達式提取模式

[英]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()給出正則表達式來識別這種模式。 提前致謝!

您必須考慮弄清楚是什么連接了您要搜索的元素。 正則表達式依賴於模式識別。 常規意義

  1. 排列成或構成恆定或確定的模式,尤其是在各個實例之間具有相同的空間。
  2. 以均勻的間隔重復出現。

鑒於此,您的問題不容易解決,因為您的來源不是“常規”

也就是說,在一種情況下,您正在尋找任何以'- 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.

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