regex - 正则表达式,如何返回标题中存在的一组单词?
问题描述
在下面的示例中,正确的结果是只返回 id 9 到 15 之间的标题吗?我得到的最接近的是:
((^| )(FED[AZ]*|(ESC[AZ]*)|(AGRO[AZ]*)|(CENT[AZ]*)|(CTR[AZ]*)|(INST[AZ]* )|(EDUC[AZ]*)|(SCI[AZ]*)|(TEC[AZ]*))(|$))
注意:FED [AZ] * 参数必须始终与列出的至少一个术语组合出现。包含词 UNIV [AZ] * 的标题必须返回 false。
ID | 文本 | 当前回报 | 预期收益 |
---|---|---|---|
1 | INST NACL 伴侣 PURA | 真的 | 错误的 |
2 | PARA FED UNIV, TOXICOL LAB | 真的 | 错误的 |
3 | CTR, BR12020330 TAUBATE | 真的 | 错误的 |
4 | 维森特林哈雷斯街 | 真的 | 错误的 |
5 | 阿尔伯特爱因斯坦大街 | 真的 | 错误的 |
6 | REG TECN 犯罪分子 | 真的 | 错误的 |
7 | 纳西门托·卡斯特罗大街 | 真的 | 错误的 |
8 | SAO PAULO FED UNIV, COLL AGR SCI, DEPT CROP SCI, BOTUCATU, SP, 巴西 | 真的 | 错误的 |
9 | INST FED CIENCIA TECNOL SUL MINAS, CAMPUS POCOS DE CALDAS | 真的 | 真的 |
10 | INST FED EDUC PERNAMBUCO IFPE, RECIFE | 真的 | 真的 |
11 | INST FED MINAS GERAIS, CAMPUS CONGONHAS | 真的 | 真的 |
12 | INST FED ECN TECNOL NORTE MINAS | 真的 | 真的 |
13 | CTR FED EDUC TECNOL OURO PRETO | 真的 | 真的 |
14 | FED INST AMPUS GARANHUNS | 真的 | 真的 |
15 | INST FED 巴西百南布哥 | 错误的 | 真的 |
解决方案
您可以使用
WHERE col RLIKE '^(?!.*\\bUNIV\\b)(?=.*\\bFED\\b).*\\b(FED|ESC|AGRO|CIE|CENT|CTR|CRT|INST|EDUC|SCI|TEC)\\b'
这是正则表达式演示。
详情:
^
- 字符串的开始(?!.*\bUNIV\b)
- 负前瞻检查:字符串中必须没有UNIV
整个单词(?=.*\bFED\b)
- 积极的前瞻检查:字符串中必须有一个FED
完整的单词.*\b(FED|ESC|AGRO|CIE|CENT|CTR|CRT|INST|EDUC|SCI|TEC)\b
- 在除换行符之外的任何零个或多个字符之后,替换列表中必须有一个完整的单词。
推荐阅读
- python - 从第二个 python 脚本中并行运行 Python 脚本
- cordova - div元素内的离子显示webview
- javascript - react-native start 给我错误:找不到模块'source-map'
- c - C GOTO 命令创建无限循环
- javascript - Angular 2/4/6:如何动态更新 scss
- javascript - 如何在 webpack 中将 init 添加到 es6 模块
- python-3.x - 检查异步屏蔽协程是否运行
- python - Python在另一个正在运行的同时运行一个python脚本?
- git - 将多个回购推入单个回购
- python - 当字典键相同时,为什么 Python 只保留最后一个键值对?