2012-06-28 1 views
1

독일어 문자열과 일치 시키려고합니다.C/C++ PCRE Regex에서 UTF-8 리터럴 문자를 사용하는 방법?

뮌헨 tausendschöne Jungfräulein 우리는 긍정적 예측 및 여러 UTF-8 코드 포인트의 시퀀스를 사용하는 PCRE 정규식과 일치 할 수 있습니다

을 ausendschçne.

예 : (?=.+(\x{0068}\x{00F6})){1}. PCRE 정규식에 그러나

, 우리는 UTF-8 리터럴 중 하나를 추가, ö, ä, çpcre_compile() 약 잘못된 UTF-8 정규식 문자열을 뿌려줍니다. 는 C를 사용하여

/C++ PCRE가 활성화 PCRE_UTF8, PCRE_UCP, PCRE_CASELESS 옵션으로 정규식 사용하는 UTF-8 리터럴, ö, ä, ç의 UTF-8 리터럴을 사용하는 유효한 PCRE 정규식 수 있습니다 무엇 ö 또는 ä 또는 ç?

+0

가장 큰 문제는 문자열이 독일어가 아닐뿐 아니라 독일어도 보지 않는다는 것입니다. "Munich"는 "München", "tausend"및 "schöne"은 아마 두 단어로되어 있고, 동사가 없으며, 약 17 세 이후로 아무도 "Jungfräulein"이라는 단어를 사용하지 않았습니다 (이는 단조롭지 만 tausend와 반대입니다. 정확함), 나는 "ausendschçne"과 비슷한 단어조차도 본 적이 없다. C-cedil은 독일어로 사용되지 않으며, 일치하지 않습니다. Bevore가 샘플 용 파서를 작성하려고하면 일치하는 샘플이 있어야합니다. – Damon

+0

parcebal, 질문을 편집 해 주셔서 감사합니다. – Frank

+0

데이먼, 너는 좋은 지적을했다. 나는 합법적 인 독일어 구의 샘플을 찾으려고 노력할 것이다. 그러나 Giuseppe D' Angelo가 아래 답변에서 지적했듯이 컴파일러의 실행 문자셋은 UTF-8 시퀀스를 올바르게 출력하도록 설정되지 않았습니다. 고맙습니다. – Frank

답변

0

PCRE 개발자 주세페 디 안젤로는 우리의 질문 on the pcre mailing list 대답

그것은 수 있습니다,하지만 당신은 컴파일러의 실행 캐릭터 세트가 적절하게 출력 UTF-8 시퀀스를 설정되어 있는지 확인해야합니다 . 케이스입니까? pcre_compile에 전달할 문자열 리터럴의 16 진 덤프를 가져 오십시오 (결국 어셈블러 출력을 살펴보십시오).