У меня есть это регулярное выражение:
REGEXP '(^0+|0+)17198671(0+|$)$'
который должен соответствовать таким строкам
US00171986710
00171986710000000000000
001719867100000000
По сути, мне нужно, чтобы в строке были все одинаковые числа, заменяющие нули и заканчивающиеся нулями или ничем, я хочу сопоставить их. Я не понимаю, почему это действительное регулярное выражение не работает с MySQL
Механизм регулярных выражений MySQL не допускает пустых альтернатив, как в ab(c|)
или a|
, Часть (0+|$)
соответствует нулю 1+ или пустой строке в конце строки ввода, и это вызывает ошибку.
Обратите внимание, что (^0+|0+)
означает, что один или несколько нулей не должны появляться в начале строки, поэтому все, что вам нужно, это
REGEXP '0+171986710*$'
подробности
0+
- один или несколько 0
с17198671
- буквальная подстрока0*
- ноль или более 0
с$
- конец строки.
(0+|)
это просто причудливый способ написания0*
.0+171986710*