首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用regex (简易)查找括号缩略词的完整形式

使用regex (简易)查找括号缩略词的完整形式
EN

Stack Overflow用户
提问于 2016-10-17 13:24:28
回答 1查看 276关注 0票数 1

我正在试图找到完整形式的缩略语,这些缩略语已在文本中使用括号指定。以下是一个例子-

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

在这里,我希望能够形成一个短形式/全形式事件的列表,如-

CRC -大肠癌 CIMP - CpG岛甲基化表型 微卫星不稳定..。

问题是,我已经能够使用re.findall('(\(.*?\))', s)找到所有括号大小的实体,但是很难找到相应的完整形式。假设所有这样的完整形式都在括号的左边,我可以使用单词边界来查找,比如括号前面的4个单词。但是为了找到正确的缩略词的完整形式,我想使用以下两个条件-

  • 字数不超过3+|SF|,在这里,x SF_x是短格式中的字符数(微卫星约化不稳定性,这里全形有4个字,而短形有3个字符)。
  • 完整形式的第一个单词以短格式的第一个字符开始(例如。直肠癌( colorectal (crc))

根据我目前对regex的理解,我无法编写一个正则表达式来解决上述两个条件,并在文本中找到所有这样的情况。你能给我一些建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-17 17:51:08

正如我刚才所说,在某些情况下,这可能是不准确的。你很可能需要对结果进行校对以保证准确性。

我建议用几个雷克斯。以下是您需要采取的步骤:

  1. 把缩略语记下来。你已经开始用你的第一个正则表达式了。
  2. 找出缩略语中有多少字母。
  3. 构造并运行此regex:((?:\w+\W+){1, (缩写长度+3) })\(缩略词\)。例如,((?:\w+\W+){1,6})\(CRC\)。 此步骤获取括号内缩略词的范围内的所有单词(“不超过3+|SF|")。
  4. 在前面的步骤中,对第1组中的单词构建并运行这个正则表达式:\b (首字母缩写) .*。例如,CRC的\bC.*。您将希望在这里使用不区分大小写的匹配。 这样可以在范围内找到以给定字母开头的第一个单词;这样,您可以在首字母之前找到额外的单词。

请注意,我使用的是regex定义的“word”,这意味着[a-zA-Z0-9_]\w匹配(除非您处于Unicode模式,当它与[\p{L}\p{N}_]匹配时)。您可能希望更改\w\W (如果第一个单词可以直接出现在连字符之后,也可以更改\b )。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40087617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档