Regex,如何返回标题中的一组单词



在下面的例子中,正确的结果是只返回id 9和15之间的标题吗?我得到的最接近的是:

(^|((FED[A-Z]*|(ESC[A-Z]*(|(AGRO[A-Z]]*(|

注意:FED[A-Z]*参数必须始终与列出的至少一个术语的组合一起存在。包含术语UNIV[A-Z]*的标题必须返回false

当前返回真//tr>真真真
ID 文本预期返回
1 INST NACL MATE PURA
2 PARA FED UNIV,毒理学实验室
3 CTR,BR12020330 TAUBATE
4 VICENTE LINHARES ST
5 阿尔伯特·爱因斯坦大街
6 REG TECN CRIMINALIST
7 NASCIMENTO CASTRO AVE
8 圣保罗联邦理工大学,COLL AGR SCI,DEPT CROP SCI,博茨瓦纳,SP,巴西
9
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 PERNAMBUCO巴西

您可以使用

WHERE col RLIKE '^(?!.*\bUNIV\b)(?=.*\bFED\b).*\b(FED|ESC|AGRO|CIE|CENT|CTR|CRT|INST|EDUC|SCI|TEC)\b'

这是regex演示。

详细信息

  • ^-字符串的开头
  • (?!.*bUNIVb)-一个否定的前瞻性检查:字符串中必须没有UNIV全词
  • (?=.*bFEDb)-正向前瞻检查:字符串中必须有一个FED完整单词
  • .*b(FED|ESC|AGRO|CIE|CENT|CTR|CRT|INST|EDUC|SCI|TEC)b-在除换行字符以外的任何零个或多个字符之后,必须有一个完整的单词来自替换列表

最新更新