MySQL REGEXP 查找单词,然后查找非逗号字符,直到结束行
MySQL REGEXP to find a word and then non-comma characters till end line
我想要一个 MySQL 正则表达式模式,它查看逗号分隔的名称,如果所有名称都必须与 Covid 实验室打交道,则结果为 1/True,如果不是,则结果为 0/False。下面的一些示例具有预期的行为:
SET @pattern = 'some regexp pattern'
-- example 1:
SELECT 'COVID-19 Positive Lab Results' REGEXP @pattern;
>>> 1
--example 2:
SELECT 'COVID-19 Positive Lab Results, Traveling Test, COVID-19 Pending Lab Results REGEXP @pattern;
>>> 0
--example 3:
SELECT 'COVID-19 Positive Lab Results, COVID-19 Pending Lab Result - ABC'
REGEXP @pattern;
>>> 1
我目前的模式是'(covid.*[lab|test].*,)*.*covid.*[lab|test]([^,])+$'
我的想法是 (covid.*[lab|test].*,)*
会找到 0 个或任何不间断数量的必须处理 covid lab/test 结果的条目然后我会要求它以 .*covid.*[lab|test]([^,])+$
结束Covid 实验室结果模式。现在这两个部分都不起作用:
第一个 returns 1 用于:
'COVID-19 Positive Lab Results, Traveling Test, COVID-19 Pending Lab Results, COVID-19 test'
和第二个 returns 1 用于:
'COVID-19 Positive Lab Results, ab'
解决方案不必是正则表达式就很清楚
您可以使用
^[^,]*covid[^,]*(lab|test)[^,]*(,[^,]*covid[^,]*(lab|test)[^,]*)*$
详情
^
- 字符串开头
[^,]*covid[^,]*(lab|test)[^,]*
- 逗号以外的零个或多个字符,covid
子字符串,逗号以外的零个或多个字符,lab
或 test
,零或逗号以外的更多字符
(,[^,]*covid[^,]*(lab|test)[^,]*)*
- 零个或多个逗号序列,零个或多个逗号以外的字符,covid
子字符串,零个或多个逗号以外的字符,lab
或test
,逗号以外的零个或多个字符
$
- 字符串结尾。
其中一个问题是您使用了 bracket expression ([...]
) instead of a grouping construct ((...)
)。
我想要一个 MySQL 正则表达式模式,它查看逗号分隔的名称,如果所有名称都必须与 Covid 实验室打交道,则结果为 1/True,如果不是,则结果为 0/False。下面的一些示例具有预期的行为:
SET @pattern = 'some regexp pattern'
-- example 1:
SELECT 'COVID-19 Positive Lab Results' REGEXP @pattern;
>>> 1
--example 2:
SELECT 'COVID-19 Positive Lab Results, Traveling Test, COVID-19 Pending Lab Results REGEXP @pattern;
>>> 0
--example 3:
SELECT 'COVID-19 Positive Lab Results, COVID-19 Pending Lab Result - ABC'
REGEXP @pattern;
>>> 1
我目前的模式是'(covid.*[lab|test].*,)*.*covid.*[lab|test]([^,])+$'
我的想法是 (covid.*[lab|test].*,)*
会找到 0 个或任何不间断数量的必须处理 covid lab/test 结果的条目然后我会要求它以 .*covid.*[lab|test]([^,])+$
结束Covid 实验室结果模式。现在这两个部分都不起作用:
第一个 returns 1 用于:
'COVID-19 Positive Lab Results, Traveling Test, COVID-19 Pending Lab Results, COVID-19 test'
和第二个 returns 1 用于:
'COVID-19 Positive Lab Results, ab'
解决方案不必是正则表达式就很清楚
您可以使用
^[^,]*covid[^,]*(lab|test)[^,]*(,[^,]*covid[^,]*(lab|test)[^,]*)*$
详情
^
- 字符串开头[^,]*covid[^,]*(lab|test)[^,]*
- 逗号以外的零个或多个字符,covid
子字符串,逗号以外的零个或多个字符,lab
或test
,零或逗号以外的更多字符(,[^,]*covid[^,]*(lab|test)[^,]*)*
- 零个或多个逗号序列,零个或多个逗号以外的字符,covid
子字符串,零个或多个逗号以外的字符,lab
或test
,逗号以外的零个或多个字符$
- 字符串结尾。
其中一个问题是您使用了 bracket expression ([...]
) instead of a grouping construct ((...)
)。