2011-01-28 2 views
0

CP_과 일치시키는 데 사용되는 RegEx 패턴은 CPLAT::CP_이 아니어야합니까?문자열이 다른 문자열을 따르지 않는 경우 문자열을 일치시키는 RegEx

+0

하나의 언어를 알고 있기 때문에 RegEx를 사용하여 연습 할 수 있다는 것은 자발적으로 다른 것을 숙달 할 수 있다는 것을 자동으로 의미하지 않습니다. 특히 뚜렷하게 다른 관용구를 사용하는 언어가 특히 그렇습니다. 예 : Lisp을 사용해보십시오. RegEx가 특히 어렵다는 것은 아닙니다. 단지 접근 할 수있는 것은 아닙니다. 가능한 한 자주 정규식을 허용하는 도구를 사용하는 것이 좋습니다. 약간의 연습은 먼 길을 간다. – ocodo

답변

0

정규 표현식으로 "^ CP_"를 원한다고 생각합니다. ^는 입력을 시작할 때이 패턴을 확인할 수있는 식을 알려줍니다.

http://www.regular-expressions.info/anchors.html

+0

^단어/기호의 첫 번째 문자가 아니라 문자열/줄의 첫 번째 문자에 앵커를 지정합니다. OP에서 문자열 한 단어를 비교하는 것뿐만 아니라 파일을 검색해야하는 것처럼 들립니다. – CoreyStup

+0

@corey - yup 파일을 검색합니다. – Axl

3
(?<!CPLAT::)CP_ 

은 (정규식 맛에 따라) g 옵션을 사용하십시오 :

을 덧붙일되지 않은 CP_의 모든 인스턴스 경우를 찾을 수 negative lookbehind

0
[^:]CP_ 

를 사용 당신은 하나의 라인 당 하나 이상의 CP_가 매치 될 것으로 예상한다.

+0

Perl과 JavaScript 같은 일부 맛보기에서 'g'플래그가 필요합니다. 동일한 줄 또는 별도의 줄을 검색하는 경우 두 개 이상의 일치 항목을 검색하는 경우에는 상관 없습니다. 'm' 수식자는 완전히 관련이 없습니다; '^'와'$'앵커의 의미를 바꾸는 것뿐입니다. –

+0

실수로, 나는 어떤 맛에서'm'이'g'와 같은 것이라고 생각했습니다. – ocodo

1

또한 RegEx for Dummies와 같은 매우 간단한 튜토리얼을 가지고 있습니까? C++로 작성했지만 RegEx를 쉽게 이해할 수 없다는 것이 이상한가요?

아니요, 이상하지 않습니다. 정규 표현식에서는 자연스럽게 나오지 않는 사고 방식이 필요합니다. C++이나 다른 언어로 프로그래밍 할 수있는 것은 도움이되지 않습니다. 무엇보다도 핸디캡입니다. 좋은 자습서 here가 있지만 최고의 자습서조차 피진 수준으로 이동합니다. regexes 주위에 머리를 얻고 싶다면 The Book이 필요합니다.

또 다른 문제점은 regexes에 대한 표준이 없다는 것입니다. 모든 프로그래밍 언어, 모든 프레임 워크, 모든 IDE 또는 텍스트 편집기는 정규 표현식의 "맛"을 갖고있는 것처럼 보입니다. 일부는 다른 사람이하지 않는 기능을 사용하는 반면, 일부는 동일한 기능을 수행하기 위해 다른 구문을 사용합니다. 그것이 바로 The Other Book이 나오는 곳입니다. 우리가 일반적으로 사용하는 종류의 작업 중 가장 널리 사용되는 여러 가지 예가 철저히 설명되어 있습니다.

관련 문제