>백엔드 개발 >C++ >C# Regex에서 왜`\ d`가`[0-9]`보다 느린 이유는 무엇입니까?

C# Regex에서 왜`\ d`가`[0-9]`보다 느린 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-31 18:31:13185검색

c#정규식 느린 느린 느린

이 기사는 C#정규식 엔진에서 놀라운 발견에 대해 설명합니다. 캐릭터 유형은 가 의 슈퍼 세트 인 경우에도 d 문자 범위 효율보다 낮은 것으로 보입니다. [0-9] 와 의 차이 효율의 차이의 주된 이유는이 두 문자의 차이 때문입니다.

: d는 모든 유니 코드 번호 문자와 일치합니다. 여기에는 표준 숫자 0-9뿐만 아니라 다른 언어 및 작문 시스템에 사용되는 다른 숫자도 포함됩니다. 예를 들어, 페르시아어 숫자와 데바나 가리 숫자도 [0-9]입니다. [0-9] d :

숫자 0-9와 일치합니다. 그것은 문자 세트 의 소형 표현입니다.

성능에 미치는 영향 d [0-9] 정규 표현식과 문자열을 일치시킬 때 정규 표현식 엔진은 문자열의 각 문자를 지정된 문자 클래스와 비교해야합니다. 의 경우, 문자가 유니 코드 번호인지 여부를 결정하기 위해 추가 검사를 수행해야하며, 이는 0-9 범위의 간단한 점검 문자보다 높을 수 있습니다. 테스트 검증

가 제공 한 테스트 코드는이 성능 차이를 보여줍니다. 10,000 개 이상의 임의 문자열 (각 문자열은 숫자의 약 50%를 포함 함)에서 다음 결과가 얻어집니다.

정규 표현
    : 00 : 00 : 00.2141226 (느린)
  • 정규 표현 정규 표현 : 00 : 00 : 00.1388997 (보다 약간 느리게) d 결론 d > 는 의 편리한 약어이지만, 성능 측면에서 항상 최선의 선택은 아닙니다. 표준 번호 0-9와 일치 해야하는 경우
  • 문자 범위를 사용하는 것이 좋습니다.

위 내용은 C# Regex에서 왜`\ d`가`[0-9]`보다 느린 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.