2012-08-15 3 views
3

난 단지 비 영숫자 문자를 찾으려면 단지 '없는 공간없이 -'...정규 표현식하지 영숫자가 아닌 공간에서 유효 '-'문자

하지만이 작동하지 않습니다 :

REGEXP '^[a-zA-Z0-9/-:space:]*' 

이 정규 표현식은 이러한 데이터에 유효합니다

'Test Cinema' 
    'AMERICANII AU TALENT - SEZONUL 5, EPISODUL 12' 

나는이 같은 필드를 찾으려면, 이러한 문자를 찾으려면 그나마 :

,369을
'Test Item;?!' 
'LOCAL KOMBAT "FIERBE BULGARIA"' 

어떻게하면 다른 문자에만 유효하는 정규 표현식을 쓸 수 있습니까?

+0

시도해보세요. [[^ a-zA-Z0-9 \ -] ' –

+0

감사합니다. 하지만 이것은 작동하지 않습니다. 여전히 'Test Cinema'를 찾으십시오. – czupe

답변

1

테스트가 일치해야 것들의 목록을 가지고 유용 할 것이다 명확하게 일치하지해야합니다 : 문자열 - (공간 포함)

비어 있지 않은 모든 비 숫자와 일치하도록이 시도 이 종류의

1. ^.*?[^A-Za-z0-9 -]+[A-Za-z0-9 -]*$ 
2. ^.*?[^A-Za-z0-9, -]+[A-Za-z0-9, -]*$ 

1 경기를하려고 생각해야 될 때, 정의 (첫 번째 때문에 오 F 쉼표)

AMERICANII AU TALENT - SEZONUL 5, EPISODUL 12 
Test Item;?! 
LOCAL KOMBAT "FIERBE BULGARIA" 

하지만 테스트 시네마 일치하지 않는

2 경기

Test Item;?! 
LOCAL KOMBAT "FIERBE BULGARIA" 

그러나

Test Cinema 
AMERICANII AU TALENT - SEZONUL 5, EPISODUL 12 

당신은 두 번째로 재생할 수 있습니다 일치하지 않습니다 하나 here 샘플 용으로 개행을 무효화해야했지만 한 줄에 하나의 테스트를 추가하여 일치하는지 확인하십시오.

+0

정확히 내가 필요로하는 것은 불행히도 MySQL에서 이러한 패턴을 실행할 수 없습니다 ...하지만 그것에 대한 작업, 감사합니다 "놀이터"에 표시된 대답은 ... – czupe

4
[^a-zA-Z0-9 -]* 

내가 원하는 것입니다. []의 끝에서 -을 배치함으로써

는 정규식 리터럴 - 뜻을 알고, 당신은 \으로 탈출 할 필요가 없습니다.

편집 다음 전체 문자열 일치하려면 다음을 사용 :

^[^a-zA-Z0-9 -]*$ 

^$은 문자열의 시작 부분과 끝 부분에 정규식을 고정하는 데 사용됩니다.

+0

@czupe - 이스케이프 처리되지 않은 대시는 문자 클래스에서 마지막에 있어야하며, 그렇지 않으면 문자의 범위로 해석됩니다. –

+0

감사합니다,하지만 stil 찾기, 'Test Cinema'에서 유효하고, 유효하지 않은 영숫자와 non - ', non' '에 대해서만 유효한 reg 식을 원합니다. – czupe

+0

@czupe 그건 내 정규식의 기능입니다. 당신은 * 전체 문자열 *이 필요하다는 것을 의미합니까? –

6

^는 부정적 결과를 위해 대괄호 안에 있어야합니다. 정규식^시작 부분에 놓을 때 문자열의 처음에 일치해야한다는 것을 의미합니다.

^[^a-zA-Z0-9 -]+$ 
관련 문제