我正在试图找到完整形式的缩略语,这些缩略语已在文本中使用括号指定。以下是一个例子-
异常DNA甲基化是癌症的主要表观基因改变之一,已被报道在结直肠癌的一个子集中积累,即所谓的CpG岛甲基化表型(CIMP),该表型与微卫星减少不稳定性(MSI)-high CRC有关。
在这里,我希望能够形成一个短形式/全形式事件的列表,如-
CRC -大肠癌 CIMP - CpG岛甲基化表型 微卫星不稳定..。
问题是,我已经能够使用re.findall('(\(.*?\))', s)找到所有括号大小的实体,但是很难找到相应的完整形式。假设所有这样的完整形式都在括号的左边,我可以使用单词边界来查找,比如括号前面的4个单词。但是为了找到正确的缩略词的完整形式,我想使用以下两个条件-
根据我目前对regex的理解,我无法编写一个正则表达式来解决上述两个条件,并在文本中找到所有这样的情况。你能给我一些建议吗?
发布于 2016-10-17 17:51:08
正如我刚才所说,在某些情况下,这可能是不准确的。你很可能需要对结果进行校对以保证准确性。
我建议用几个雷克斯。以下是您需要采取的步骤:
((?:\w+\W+){1, (缩写长度+3) })\(缩略词\)。例如,((?:\w+\W+){1,6})\(CRC\)。
此步骤获取括号内缩略词的范围内的所有单词(“不超过3+|SF|")。\b (首字母缩写) .*。例如,CRC的\bC.*。您将希望在这里使用不区分大小写的匹配。
这样可以在范围内找到以给定字母开头的第一个单词;这样,您可以在首字母之前找到额外的单词。请注意,我使用的是regex定义的“word”,这意味着[a-zA-Z0-9_]由\w匹配(除非您处于Unicode模式,当它与[\p{L}\p{N}_]匹配时)。您可能希望更改\w和\W (如果第一个单词可以直接出现在连字符之后,也可以更改\b )。
https://stackoverflow.com/questions/40087617
复制相似问题