2011-11-06 7 views
0

좋아, NSString에서 아포스트로피가 포함 된 단어를 제거하는 코드를 작성하려고합니다. 여기 http://rubular.com/r/YTV90BcgoQRegexKitLite NSString이 정확히 일치하지 않습니다.

, 표현은 다음과 같습니다 : \S*'+\S 웹 사이트에 같이

단어가 포함 된이 작업을 수행하려면, 나는이 웹 사이트를 사용하여 테스트하는 것이, 나는 정규 표현식을 사용하기로 결정했습니다, 나는 하나를 썼다 아포스트로피 과 일치합니다. 그러나 어떤 이유로 든이 코드를 사용하는 응용 프로그램에서 다음 코드를 사용합니다.

sourceString = [sourceString stringByReplacingOccurrencesOfRegex:@"\S*'+\S" withString:@""]; 

긍정적 인 결과가 반환되지 않습니다. NSLogging에 의해 'sourceString', 나는 'Do not'와 'Does not'같은 단어가 출력물에 여전히 존재한다는 것을 알았다.

내 표현이 문제가 아니지만 RegexKitLite가 특정 유형의 표현을 허용하지 않는 것 같습니까? 누군가가 여기에서 무슨 일이 일어나고 있는지 아는 경우에, 저를 계몽하십시오!

답변

1

리터럴 NSString s는 과 같은 것을 넣을 수 있도록 이스케이프 문자로 \을 사용합니다. Regexes \S과 같은 문자 클래스의 이스케이프 문자로 백 슬래시를 사용합니다. 리터럴 문자열이 컴파일러를 통해 실행되면 백 슬래시는 이스케이프 문자로 처리되고 정규식 패턴을 만들지 않습니다.

그러므로 문자 그대로 NSString에서 백 슬래시 자체를 이스케이프 처리해야 패턴으로 사용되는 문자열에 백 슬래시가 생깁니다. @"\\S*'+\\S".

"알 수없는 이스케이프 시퀀스"에 대한 컴파일러 경고를 보았을 것입니다. 경고를 무시하지 마십시오!

+0

당신은 절대적으로 맞습니다. 나는 그걸 완전히 놓쳤습니다. 웬일인지, 나는 내가 추측하고있는 그 경고를 알아 채지 못했다! – elliottbolzan

관련 문제