2011-08-05 7 views
0

정규식 : 단일 문자 (MySQL) 만 일치합니까?

POSIX ERE 형식 (MySQL 용)의 정규 표현식이 문자열에서 2 개의 공백 사이에 일치해야합니다.

"abc d e f ghi""d e f"과 일치해야합니다.

저는 정규 표현식에 대한 기본적인 지식 만 가지고 있습니다. 표현 (PHP에서) 및 MySQL에서 작동하도록 가져올 수 없습니다 ...

업데이트 : 내가 뭘하려고하는지 그리고 기능에 대한 자세한 내용은 내 다른 질문을 참조하십시오. 사용 :

MySQL: how to remove all single characters from a string?

+0

'abc d e f ghi j k l mno'와 (과) 일치해야하는 항목은 무엇입니까? 'd e f' 또는'j k l' 또는'd e f ghi j k l'? 원본이'd','e' 및'f'와 일치한다는 것을 의미하지 않습니까? – Eric

+0

내가 뭘하려는거야 문자열에서 단일 문자를 제거하는 것입니다 ... 패턴과 일치하는 문자를 제거하는 기능을 발견했지만 지금은 단일 문자와 일치하는 좋은 패턴이 필요합니다 .... – Dylan

+0

나는 당신의 질문을 이해하지 못한다. 당신은 regexp 연산자를 사용하여 MySQL의 쿼리를 실행해야 하나의 서있는 문자와 일치하는 모든 레코드를 반환합니까? 또는 다른 것? mysql regexp 엔진은 매칭에만 사용된다 (매칭 된 그룹은 캡쳐되지 않는다) –

답변

0

일반 POSIX 방법 : / ([a-z]) /ig하지만 MySQL은 RLIKE 경우, 그것은 ' [a-z] ' 것 (경우에는

1

" [a-z] " 당신이 원하는합니까 무엇 열 정렬에 따라 달라집니다로?

+0

2 개의 단일 문자가 서로 뒤떨어져있을 때 완전히 작동하지 않는 것 아닌가? – Dylan

+0

@Dylan : 먼저 모든 공백을 두 공백으로 바꾸면 작동합니다! – Eric

+0

좋은 제안입니다 ...나는 지금 Regexbuddy에서 작업하고있다.하지만 슬프게도 MySQL에서 찾은 함수가이 패턴과 작동하지 않는 것 같다 ... – Dylan

0

당신은 MySQL word boundaries을 사용해야합니다

  • [[: < :]], [[:> :]]

이 마커는 단어 경계에 대한 서. 단어의 시작과 일치하고 각각 끝과 일치합니다. 단어는 단어 문자 앞에 또는 뒤에 오는 단어 문자 시퀀스 입니다. 단어 문자는 alnum 클래스의 영숫자이거나 밑줄 (_)입니다.

mysql> SELECT '단어'REGEXP '[[: < :]] 단어 [[:> :]]' '; -> 1 MySQL은>

MySQL의 정규식은 [[:<:]][[:alpha:]][[:>:]] 될 것이다 그래야. 이것은 asker가 실제로 필요로하는 것처럼 MySQL에 서있는 모든 알파벳 문자와 일치합니다. 그러나 공백으로 둘러싸인 비 공백 문자 일 경우 RegEx [[:<:]][^[:blank:]][[:>:]]을 사용해야합니다.

이 단어 경계 구문은 POSIX ERE Standard에 없지만 많은 다른 도구는 유사한 구문을 가지고 있습니다. 예를 들어, GNU grep은 RE에서 '\ <'및 '\>'을 사용하여 왼쪽 및 오른쪽 단어 경계를 의미합니다.