2014-09-03 3 views
0

쿼리에 문제가 있습니다. DB로 MySQL을 사용합니다. 내가 예상 결과와 일치하는 REGEX을 사용하려는 테이블은 다음과 같습니다mysql에서 일치하는 정규식이 실패했습니다.

table A 

----------------------------------------------- 
| ID | Description       | 
----------------------------------------------- 
| 1 | 29th Marine Regiment/1st Bn (1/29) | 
| 2 | new 21 new 2 new     | 
| 3 | new 2th 2 (2/2)     | 
| 4 | 2new 2new (2/2)     | 
| 5 | new2 new 2new      | 

내가 얻을 필요가 결과 :

----------------------------------------------- 
| ID | Description       | 
----------------------------------------------- 
| 1 | 29th Marine Regiment/1st Bn (1/29) | 

내가 정규식에 대한 올바른 결과가

^(29[^0-9]+)[^0-9]+1[^0-9]+\([a-zA-Z0-9/-]*\)\s*$ 

in http://www.regexr.com/ 그러나 MySQL에서는 결과를 얻지 못합니다.

http://sqlfiddle.com/#!2/7bd4b/2

사람은 이런 일이 얼마나 알고 있나요?

+1

당신이 내가이 작업을 하나 가지고가되고 싶어요 * 생각 나는 * 무엇에 정규식을 트리밍 : ''^ 29 [^ 0-9] +1 [^ 0-9] + \\ ([a-zA-Z0-9/-] * \\) \\ s * $ ''주의하십시오. – Biffen

+0

thanks..it works – muhnizar

+0

[여기] (http://stackoverflow.com/q/25615003/1578604)의 모든 업데이트? – Jerry

답변

0

(대답에 내 의견을 켜기.)

당신은 백 슬래시를 이스케이프해야합니다! 예 : \(\\(.

그리고 거기에 몇 가지 다른 문제 :이 제거 될 수 있도록

  • 처음에 그룹은 어디서나 사용되지 않습니다.

  • [^0-9]+[^0-9]+ (일단 그룹이 제거되면)은 다소 중복됩니다. [^0-9]{2,}으로 줄일 수 있지만이 경우에는 [^0-9]+으로 충분합니다.

  • 바이올린 버전에는 이상한 {}을 제거해야했습니다.

결과는 이렇게이다 :

'^29[^0-9]+1[^0-9]+\\([a-zA-Z0-9/-]*\\)\\s*$' 
관련 문제