使用正则表达式查找完整形式的括号中的首字母缩略词


2

我试图找到使用括号在文本中指定的完整形式的首字母缩略词。

这是一个例子:

据报道,异常DNA甲基化是癌症中主要的表观遗传改变之一,在结肠直肠癌(CRC)的一个子集中积累,即所谓的CpG岛甲基化表型(CIMP),已知其与微卫星减少的不稳定性相关( MSI) - 高CRC

在这里,我希望能够形成一个简短/完整形式的列表,如:

CRC - 结直肠癌

CIMP - CpG岛甲基化表型

微星 - 微型卫星降低了不稳定性

事情是我能够找到所有使用括号的实体 re.findall('(\(.*?\))', s)但是找到相应的完整形式证明是困难的。

假设所有这些完整形式都在括号的左侧,我想使用以下内容 2 在括号中捕获缩写的完整形式的条件 -

  • 单词数不超过3+ | SF |哪里| SF |是短形式的字符数(微卫星减少不稳定性(MSI) - 这里全格有4个字,而短形有3个字)
  • 完整形式的第一个单词以短格式的第一个字符开头(例如。 C 结直肠癌( C RC))

以我目前的理解 regex,我还没能写出来 regex 这解决了上述两个条件,并在文本中找到所有这些情况。

能不能给我一些指示?

Answers:


1

假设您使用的是Python:

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

这个单词捕获组2中单词的第一个字符。该单词后跟0到3个单词(如果合适,增加数字)。所有单词都由字面空间分隔。 接下来是一个空心括号,然后是第2组中捕获的字母,它是不区分大小写的。所有这些都遵循括号模式的其余部分。

我无法将单词数量与首字母缩略词的字符数相匹配,因此您的条件之一不符合。

我的评论过于悲观。 但它会抓到很多废话。

在regex101.com上测试过

顺便说一下,你可以调整括号模式并使用 \([^)]*\)。具有贪婪乘数的否定字符不需要反向引用,因此该过程工作得更快。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.