使用正規表示式找到括號的首字母縮寫的完整形式

使用正規表示式找到括號的首字母縮寫的完整形式

我正在嘗試尋找在文本中使用括號指定的縮寫詞的完整形式。

這是一個例子:

異常的DNA 甲基化是癌症中主要的表觀遺傳改變之一,據報道在結直腸癌(CRC) 的一個子集中積累,即所謂的CpG 島甲基化表型(CIMP),已知它與微衛星不穩定性降低有關。

在這裡,我希望能夠形成一個簡短/完整形式的列表,例如:

CRC-- 大腸直腸癌

CIMP - CpG 島甲基化表型

MSI - 微型衛星降低了不穩定性

問題是我已經能夠使用 找到所有帶括號的實體re.findall('(\(.*?\))', s),但事實證明找到相應的完整形式很困難。

假設所有這些完整形式都在括號的左側,我想使用以下內容2捕捉括號中縮寫的完整形式的條件 -

  • 字數不超過3+|SF|其中|SF|是縮寫形式的字元數(微衛星減少不穩定性 (MSI) - 這裡完整形式有 4 個單詞,而縮寫形式有 3 個字元)
  • 完整形式的第一個單字以縮寫形式的第一個字元開頭(例如C大腸直腸癌(CRC))

以我目前對 的理解regex,我還無法編寫一個regex解決上述兩個條件並在文本中找到所有此類情況的解決方案。

您能給我一些建議嗎?

答案1

假設您正在使用 Python :

((\w)\w* )(\w* ){0,3}\((?i)(\2)[^)]*\)

此捕獲捕獲第 2 組中單字的第一個字元。所有單字均由文字空格分隔。接下來是一個開括號,後面是第 2 組中捕獲的字母,該字母不區分大小寫。所有這些都遵循括號模式的其餘部分。

我無法將字數與縮寫的字元數相匹配,因此不滿足您的條件之一。

我的評論太悲觀了。但會捕捉到很多廢話。

在 regex101.com 上測試

順便說一句,您可以調整括號模式並使用\([^)]*\).使用貪婪乘數的否定字元不需要反向引用,因此該過程運行得更快。

相關內容