2011-01-14 3 views
3

wxRegEx에서 작동하는 을 정규 정규식으로 작성하면이 유사 정규식과 일치시킬 수 있습니다 : *good|better|best*?여러 단어 전체를 일치시키는 정규식

문자 수준에서 정규식 일치 (예 : *.[ch]pp)를 알고 있지만 전체 단어가 어긋나는 이유는 무엇입니까?

감사합니다.

+0

http://rubular.com/r/UahBdaQNhi? – marcog

+0

@marcog 이것은 훌륭한 리소스입니다. 감사합니다! 왜 '\ b (good | better | best) \ b'가 wxRegEx에서는 작동하지 않습니까? –

+0

또 다른 멋진 리소스 : http://www.regexguru.com/2008/04/wxregex-class-in-wxwidgets/ –

답변

2

이 질문은 당신이 사용하고있는 풍미의 풍미를 항상 지정해야하는 이유의 좋은 예입니다. 대부분의 정규 표현식은 단어 경계를 일치시키는 방법을 제공하며 그 중 대부분은 \b을 사용합니다. this page에 따르면 wxRegEx를 사용하면 BRE, ERE 또는 ARE의 세 가지 맛 중 하나를 선택할 수 있습니다. 그 중 ARE 만 단어 경계를 지원하며 \b이 아니라 \y을 사용합니다. 당신이 그것을 컴파일 할 때 wxRE_ADVANCED을 지정 가정이 정규식 단어 good 중 하나 better, 또는 best 포함 된 문자열과 일치합니다 : 당신이 사용되는 예에 의해 판단

\y(good|better|best)\y 

을, 난 당신과 혼란 정규 표현식에있을 수 있습니다 생각 글로브. 예를 들어, *.[ch].c 또는 .h으로 끝나는 파일 이름을 일치시키는 데 사용하는 glob입니다. 정규식은 \.[ch]$입니다. 이전에 링크 된 사이트에서 좋은 정규식 튜토리얼이 있지만, 가장 큰 차이점은 정규식은 glob이하는 것처럼 전체 문자열을 설명 할 필요가 없다는 것입니다. 그래서 .*으로 정규 표현식을 시작할 필요가 없었지만 foo.cs 또는 bar.html과 같은 문자열과의 일치를 유지하기 위해 $을 마지막에 추가해야했습니다.

+0

이것은 놀라운 대답입니다. 고맙습니다! 나는 당신에게 점수를주기에 충분한 점수가 없다. 그러나 적어도 나는 논평 할 수있다. (1) 당신은 glob와 정규 표현식의 근본적인 차이점을 강조했다.(2) wxRE_ADVANCED에 대한 요구 사항을 적어 두었습니다 (\ y도 작동하지 않기 때문에 시스템에서 사용할 수없는 것 같습니다). (3) wxRegEx 개요에 대한 훌륭한 링크를 제공했습니다. 감사! –

+0

아! 방금 "컴파일 할 때 wxRE_ADVANCED 지정"은 "wxRegEx :: Compile()"호출을 의미한다는 것을 알았습니다. 지금 시도해 보니 ... –

+0

예! 그것은 작동합니다! . \ * \ y (감사합니다.) \ y. \ * - 감사합니다. –

1

good|better|best

난 당신이 "우아한"무슨 뜻인지 모르겠어요. 내가 아는 한, 그것은 꽤 우아합니다.

+0

음, 내가 준 pseudo 정규식은 ... ** 의사 **입니다. 그것은 실제로 작동하지 않습니다. ** 작품 **이 필요합니다. 나는 시도했다. \ * \ b (1 | 2 | 3) \ b. \ *** 그러나 그것은 작동하지 않는다. –

+0

"작동하지 않는다"는 것은 무엇을 의미합니까? 어떤 언어를 사용하고 있습니까? 당신의 의견은 무엇이며 무엇을 얻습니까? – CanSpice

+0

wxRegEx를 사용하고 있습니다. 작동하지 않음으로써 "오류 : 잘못된 정규 표현식 '\ * one | two | three \ *': 수량 한정자 피연산자가 잘못되었습니다."라는 오류가 발생합니다. 그것은 심지어 일치하는 텍스트 (대화 형 정규식 테스트 프로그램)에 도달하지 않습니다. –

관련 문제