2010-07-21 4 views
1

RegEx.IsMatch의 결과가 인코딩의 영향을 받는지 알고 싶습니다.Regex.IsMatch가 "바이트 수준"또는 "문자열 수준"에 적용됩니까?

문자열이 정규식 패턴을 사용하여 다른 문자열에 포함되어 있는지 확인하고 있습니다.

I 오전

Regex.IsMatch와 일치하는 시험은, "바이트 수준"또는 "문자열 수준"에 적용됩니다 ... 내 질문은 그래서 패턴이 정확 99.9 % 확신?

UPDATE

:

이 하나가 여기에 ... TEΣT

이 하나가 일치하는 말씀입니다 ... ΤΕΣΤ

출력과 패턴은 ...

If Regex.IsMatch(Output, "(?<=^|\b|\s)" & Regex.Escape(Word) & "(?=\s|\b|$)") Then 
'dooooo 
end if 

답변

1

정규 표현식은 문화적 감각적 표현이기 때문에 현재 문화권을 사용하여 대/소문자 감각을 처리하는 방법을 결정할 때 사용합니다.

이 기능을 끄는 데 사용할 수있는 옵션은 RegexOptions.CultureInvariant입니다. 이것은 대신 중립 문화를 사용하게합니다. 정규 표현식은 여전히 ​​문자 레벨에서 작동하지만, 코드 작성기는 16 비트 코드 포인트이며 바이트가 아닙니다.

2

.NET의 모든 Regex 함수는 바이트 인코딩이 아닌 문자열에서 작동합니다.

문자열에있는 일부 문자가 올바른 문자가 아니도록 문자열이 잘못 디코딩 되었기 때문에 문제가 발생한 것일 수 있습니다. 문자열과 정규식을 게시 할 수있는 경우 왜 일치하지 않는지 설명 할 수 있습니다.

+2

나는 99.9 % 잘못 생각합니다. :) – OrElse

+0

요청에 따라 질문을 업데이트했습니다. – OrElse

관련 문제