regex - 根据特定单词选择句子
问题描述
外行术语:
我想要一个包含以下术语的句子:颈椎、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 为中心的脊柱的最小右旋脊柱侧凸。
所以任何帮助表示赞赏。谢谢,麻烦您了。
解决方案
我最终分两步完成了这项工作。根据我想要的特定单词识别句子,然后从这些删除的句子中包含我不想要的单词。
推荐阅读
- excel - 运行时错误“424”:使用 ThisWorkbook 时需要对象错误
- spring-boot - 为不同的模块向 Maven 项目添加非托管依赖项失败
- objective-c - WebRTC:通过 CGDisplayStream (h264/vp8/vp9) 进行屏幕共享的编码性能不佳
- html - 使用 CSS :not() 定位元素中的选定内容
- docker - WSL:无法在 WSL 2、Ubuntu 18.04 上安装 docker
- python - 尝试使用 Python 创建 Google 快讯时电子邮件或密码不正确
- git - 如何将克隆的 git 存储库 zip 文件添加到 Azure devops?
- c++ - 如何在 C++ 中删除新数组?
- javascript - 在从后端填充数据的 SELECT 上添加额外的选项标签——不起作用
- python - 使用 Python 客户端访问 WebDAV 时出现 HTTP 401 错误