【发布时间】:2021-01-15 15:16:52
【问题描述】:
外行术语:
我想要一个包含以下术语的句子:颈椎、C[1-5] 和/或 T[1-6],但不包括腰椎、T[7-9] 和/或 T1 [0-2]。
示例:
** 发现 **:以腰椎 C3 为中心的脊柱有轻微的右旋脊柱侧凸。
所需的输出:
no sentence selected
尝试 #1:
我尝试使用 if-then 语句。如果句子不包含这些术语,则检查该句子是否包含我想要的术语。
正则表达式:
[^.]*(?(?!lumbar|T[7-9]|T1[0-2][^.]*?\.)((?i)cervi[cx][^.]*?\.)|((C[1-7]|T[1-6])(?(?=\.)[^.]*?\.|\D[^.]*?\.)))
输出: ** 调查结果 **:以腰椎 C3 为中心的脊柱轻微右旋脊柱侧凸。
尝试 #2
我尝试按照我在网上阅读的格式,你在一个句子中将你想要的单词和你不想要的单词链接起来
正则表达式:
[^.]*(?=((?i)cervi[cx][^.]*?\.)|((C[1-7]|T[1-6])(?(?=\.)[^.]*?\.|\D[^.]*?\.)))(?!lumbar|T[7-9]|T1[0-2][^.]*?\.)
输出:
** 发现 **:以腰椎 C3 为中心的脊柱有轻微的右旋脊柱侧凸。
尝试 #3
我假设 [^.]* 可能与我的逻辑不匹配,因此我将其移到 if 语句中的负前瞻组,然后再分组。
正则表达式:
(?(?![^.]*lumbar|T[7-9]|T1[0-2][^.]*?\.)[^.]*((?i)cervi[cx][^.]*?\.)|((C[1-7]|T[1-6])(?(?=\.)[^.]*?\.|\D[^.]*?\.)))
输出:
** 发现 **:以腰椎 C3 为中心的脊柱有轻微的右旋脊柱侧凸。
所以任何帮助表示赞赏。请和谢谢。
【问题讨论】:
-
也许尝试分两步完成。找到包含所需术语的句子。丢弃包含禁用词的句子。
-
@virolino,这就是我最终所做的。根据我想要的单词识别句子,然后删除包含我不想要的单词的句子。
标签: regex regex-lookarounds regex-negation