【问题标题】:Selecting a sentence based on specific words根据特定单词选择句子
【发布时间】: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


【解决方案1】:

我最终分两步完成了这项工作。根据我想要的特定单词识别句子,然后从这些删除的句子中包含我不想要的单词。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    • 2015-06-22
    • 1970-01-01
    相关资源
    最近更新 更多