Софтуерно Инженерство
Loading...
f1mp3r avatar f1mp3r 35 Точки

[Technical Issue] MySQL - Regex

Някой може ли да помогне с малко регекси в MySQL :D

Имам следния стринг: '1,2,13,15,12'

И следния експрешън: '(\,*)(2)(\,*)'

Искам да ми мачва само 2, а то мачва и 12, въпреки, че този туул показва, че мачва само 2 :?

0
Databases Basics 08/03/2015 13:15:18
crazy7 avatar crazy7 177 Точки

Може да пробраш този туул: http://www.regexr.com/

Когато имаш * при запетайките показва че може да ги няма и затова ти хваща 2-ката от 12.

Може да замениш * с + така си гарантираш че и отпред и отзад има поне една запетайка, а ако искаш да е точно 1 може да направиш така  '(\,{1})(2)(\,{1})'

1
07/03/2015 20:31:32
f1mp3r avatar f1mp3r 35 Точки

Но аз не знам дали има запетайка. Това е просто един кейс. Възможно е стринга да е '2,3,8,12,25' или пък само '2' или само '25'

0
crazy7 avatar crazy7 177 Точки

Набързо успях да измисля това - ([\W]+)([2])([\W]+)|^2[\W]+|[\W]+2$|^2$

Сигурно има и по-красив начин.

0
07/03/2015 23:39:51
f1mp3r avatar f1mp3r 35 Точки

Хм. Това работи в сайта който си пратил, но сега изкарва само '2', а имам:

2

2,4

1,2

Странно.

Update: както и да е, промених си заявката, така че да не трябва да използвам тази глупост :D. Мерси за помощта.

0
07/03/2015 23:28:46
crazy7 avatar crazy7 177 Точки

Таман мисля че измислих решение все пак ако искаш може да пробваш с

 ([^0-9]+)([2])([^0-9]+)|^2[^0-9]+|[^0-9]+2$|^2$

0
07/03/2015 23:37:00