在下面的例子中,正确的结果是只返回id 9和15之间的标题吗?我得到的最接近的是:
(^|((FED[A-Z]*|(ESC[A-Z]*(|(AGRO[A-Z]]*(|
注意:FED[A-Z]*参数必须始终与列出的至少一个术语的组合一起存在。包含术语UNIV[A-Z]*的标题必须返回false
ID | 文本 | 当前返回预期返回 | |
---|---|---|---|
1 | INST NACL MATE PURA | 真假 | //tr>|
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
-在除换行字符以外的任何零个或多个字符之后,必须有一个完整的单词来自替换列表