REGEXP MySQL-多个组,无论顺序如何
我试图在MySQL中创建一个正则表达式,但在阅读了其他示例和try&error 4个小时后,我希望有人能帮助我修复我的正则表达式,并使其正常工作 我需要的是: 在一个单独的T(“######”)文本中匹配多个字符串,无论它们位于哪个位置/顺序“###文本##文本 到目前为止,我的正则表达式是有效的,但前提是字符串的顺序与正则表达式中的顺序相同。所以我必须说我的正则表达式搜索STRING1和STRING2在###########内,无论在哪个位置REGEXP MySQL-多个组,无论顺序如何,mysql,regex,sorting,Mysql,Regex,Sorting,我试图在MySQL中创建一个正则表达式,但在阅读了其他示例和try&error 4个小时后,我希望有人能帮助我修复我的正则表达式,并使其正常工作 我需要的是: 在一个单独的T(“######”)文本中匹配多个字符串,无论它们位于哪个位置/顺序“###文本##文本
###([^#]*)(9034==1-wellig)([^#]*)(9037==DIN C4)([^#]*)###
我的文本:
###9021==220|9034==1-wellig|9023==356|9024==230|9037==DIN C4###9021==220|9034==2-wellig|9023==356|9037==DIN C4|9024==230###9021==220|9034==1-wellig|9023==356|9037==DIN C4|9024==230###
当我将文本修改为类似的内容(“9034==1-wellig”之前的“9037==dinc4”)时,它不起作用:
###9021==220|9037==DIN C4|9034==1-wellig|9023==356|9024==230###9021==220|9034==2-wellig|9023==356|9037==DIN C4|9024==230###9021==220|9037==DIN C4|9034==1-wellig|9023==356|9024==230###
例如:
我希望我清楚地解释了我的问题,我确信这只是一个小的变化,但我没有让它工作
致意
Tom天哪,我想我自己刚刚找到了解决方案,它在regex101上工作,但在MySQL上没有:/
###(?=[^#]*(9034==1-wellig))(?=[^#]*(9037==DIN C4))[^#]*###
但如果你们中的一些专家能够增强我的正则表达式,我也非常感谢:)
您不能在MySQL正则表达式中使用lookarounds,您需要使用替代选项:
WHERE col REGEXP '###[^#]*(9034==1-wellig[^#]*9037==DIN C4|9037==DIN C4[^#]*9034==1-wellig)[^#]*###'
看
详细信息
-文字###
###
-除[^#]*
.
- 一种交替捕获群匹配算法(9034==1-wellig[^#]*9037==DIN C4 | 9037==DIN C4[^#]*9034==1-wellig)
-9034==1-wellig[^#]*9037==DIN C4
,除9034==1-wellig
和
之外的零个或多个字符9037==DIN C4
-或|
-9037==DIN C4[^#]*9034==1-wellig
,除9037==DIN C4
和
之外的零个或多个字符9034==1-wellig
-除[^#]*.###
后接#
外,零个或多个字符##