2011-02-15 5 views
65

문자열에 특정 단어가 들어 있는지 단순히 확인하는 정규식은 무엇입니까 (예 : '테스트')? 나는 약간의 인터넷 검색을했지만 그 같은 정규식의 직설적 인 예제를 얻을 수 없습니다. 이것은 빌드 스크립트 용이지만 특정 프로그래밍 언어와 아무런 관련이 없습니다.문자열에 대한 정규식이 포함되어 있습니까?

/Test/ 

위의 정규식 리터럴 문자열 "테스트"를 확인합니다이 어딘가에 내에서 발견되는 :

답변

56

가정 일반 PCRE 스타일의 정규식 맛 : 원하는 및 프로그래밍 언어에 대한 구분 경우

당신이 하나, 전체 단어로 확인하려는 경우, 소문자 구분을위한 적절한 플래그, \bTest\b입니다. \b은 "단어 경계"즉 단어가 시작 또는 끝나는 것으로 간주 될 수있는 문자 사이의 지점을 나타냅니다. 예를 들어 공백은 단어 분리에 사용되므로 공백의 양쪽에 단어 경계가 있습니다.

단어의 일부분 인 으로 확인하려는 경우 해당 단어는 대소 문자를 구분하지 않는 적절한 플래그를 사용하여 다시 Test입니다. 정규 표현식을 파싱하는 오버 헤드를 없애주기 때문에 일반적으로 전용 "부분 문자열"방법이이 경우 더 빠르다는 점에 유의하십시오.

+1

"'\ b'는 두 단어 (예 : 공백)를 구분하는"단어 경계 "를 나타냅니다. '\ b'는 공백 문자와 일치하지 않습니다; * 사이의 * 일치하는 어설 션 (또는 대부분의 경우 줄의 처음이나 끝에). – strager

+1

@strager : 네, 맞습니다. 제 설명이 약간 부정확했습니다. 내가 편집 할게. –

63

은 그냥 패턴을 고정하지 않습니다.

+1

감사합니다. 간단합니다. 나는 확실히 내 인터넷 검색에서 이것을 보지 못했습니다. 내 패턴을 정박하지 않으면 무슨 뜻이야? – dotnetdev

+5

문자열의 시작 또는 끝과 일치하도록 패턴을 고정 할 수 있습니다./^ Test/또는/Test $ 또는 각각 $ /를 테스트하여 정확하게 일치시킵니다. 이 예제는 평등을 비교하는 것보다 이점을 제공하지 않으므로 치명적입니다. 예를 들어 양식 필드 유효성 검사를 수행 할 때/^ \ d + $ /와 같은 정규식은 필드에 적어도 하나의 숫자와 숫자 만 포함하면 일치합니다. –

-5

몇 년 늦었지만 왜 안 되니?

[Tt][Ee][Ss][Tt] 
+4

코드를 설명하지 않았기 때문에이 답변이 저품목 리뷰 대기열에 나타났습니다. 당신이 그것을 (당신의 대답에서) 설명한다면, 당신은 훨씬 더 upvotes를 얻을 가능성이 높습니다. 그리고 질문자는 실제로 뭔가를 배웁니다! –

+3

이것은 매우 일반화가 불가능합니다. 검색해야하는 단어가 사용자로부터 왔는지를 상상해보십시오. 모든 글자에 대해'[Aa]'패턴을 생성해야하고 꽤 빨리 못 생길 것입니다. –

관련 문제