2009-12-08 5 views
0

RegexKitLite를 사용하고 있는데 패턴 일치를 시도하고 있습니다.
다음 정규식 패턴은 N을 포함하는 내 단어를 titlde로 캡처하지 않습니다. 누락 된 문자열 변환이 있습니까?비 ASCII 문자를 RegexKitLite와 어떻게 일치 시키나요?

subjectString = @"define_añadir"; 
//regexString = @"^define_(.*)"; //this pattern does not match, so I assume to add the ñ  
//regexString = @"^define_([.ñ]*)"; //tried this pattern first with a range 
regexString = @"^define_((?:\\w|ñ)*)"; //tried second 

NSString *captured= [subjectString stringByMatching:regexString capture:1L]; 
//I want captured == añadir 

답변

0

나에게 인코딩 문제가있는 것 같습니다. 소스 코드를 ASCII와 같은 문자를 처리 할 수없는 인코딩에 저장하거나 컴파일러가 잘못된 인코딩을 사용하여 소스 파일을 읽는 중입니다.

subjectString = @"define_a\xC3\xB1adir"; 

나이 : 원래 정규식으로 돌아 간다, 제목이 같은 문자열을 만들어보십시오 그것이 작동하는 경우

subjectString = @"define_a\u00F1adir"; 

를, 소스 코드 파일의 인코딩을 확인하고는 동일합니다 있는지 확인 컴파일러가 기대하는 인코딩입니다.

EDIT : this doc에 따르면 결코 메서드를 사용하여 @"" 리터럴 구문이 아닌 NSString을 만들어야합니다. 사실 코드에서 비 ASCII 문자 (즉, 0x00..0x7F 범위에없는 문자)를 사용해서는 안됩니다. 그런 식으로 원본 파일의 인코딩에 대해 걱정할 필요가 없습니다. 그것은 당신이 사용하고있는 언어 나 툴셋에 관계없이 좋은 조언입니다.

+0

수정 : 내가 게시 한 예제가 작동합니다. 코드를 쉽게 읽을 수 있도록 단순화했지만 더 많은 단서가있을 수 있습니다 ... 내 소스 코드 파일 .m은 UTF8입니다. 유닉스 명령어'file'로 확인합니다. 이 문자열 값은 실제로 UTF8에있는 HTML 파일에서 읽습니다. "define_añadir"이 HTML에서 subjectString으로 읽히길 기대하는 "xn - define_aadir-hhb"을 나타 내기 위해 NSLog로 파일 내용을 인쇄했습니다. Alan에 대해 언급 한대로 컴파일러가 기대하는 인코딩은 어디에서 확인할 수 있습니까? 또한 내가 찾은 모든 소스 파일이 UTF8이 아니며 일부는 ASCII입니다. 이것이 문제가 될 수 있습니까? – ojreadmore

+0

ASCII는 UTF-8의 서브 세트이므로 모든 ASCII 파일도 UTF-8 파일입니다. 나머지는 내 편집을 참조하십시오. –

관련 문제