2008-10-22 5 views
2

모르겠다.하지만 매우 복잡한 정규 표현식을 사용하면 컴퓨터가 크게 느려질 것인가? 예를 들어 최근에 제안 된 유명한 이메일 검증 모듈을 좋아합니까? 이는 여기 RFC822regex 비교는 많은 리소스를 소비합니까?

업데이 트를 찾을 수 있습니다보기 같은 기능 : 나는 서둘러이 질문을했다 미안 어쨌든 난 이메일 정규식에 대한 링크 내가 말하고에 대한

+0

어 오. 누군가 다른 정규식 이메일 검사기를 작성하려고 했습니까? 링크가있을 수 있습니까? –

답변

3

그것은 매우 개인 정규식에 따라 게시 대부분의 경우 단순한 정규 표현식이 적합하지만, 뒤에서 또는 미리보기는 매우 비쌉니다.

자습서 http://www.regular-expressions.info/에 대한 자습서가 제공되므로 좋은 시작이 될 수 있습니다.

0

많은 텍스트 (큰 코드베이스,> 300k 라인)를 분석하는 프로그램을 만들었습니다. 먼저 정규 표현식을 사용했지만 정규 표현식 함수를 사용하기로 전환했을 때 정규 표현식 버전의 40 %를 차지하는 것과 같이 훨씬 빨랐습니다. 물론 그것이 달려있는 동안 내 일은 훨씬 빨라졌습니다.

0

예전에 내가 실수로 - 우연히 :-) - 멀티 라인 정규 표현식을 작성하고 10 * 200GB의 텍스트 파일을 검색/대체했습니다. 그게 천천히 ... 그래서 당신이 쓰는 것과 당신이 확인하는 것에 달려 있습니다.

0

표현식의 복잡도와 표현식과 함께 사용되는 언어에 따라 다릅니다.

JavaScript에서; 모든 것을 최적화해야합니다. C#에서; 별로.

+0

JS RegExp가 수행하는 것보다 훨씬 우수한 성능을 제공합니다. – eyelidlessness

2

쿼리를 최적화하고 regex의 내부 작업을 얼마나 잘 알고 있는지에 따라 달라집니다.

예를 들어 음수 문자 클래스를 사용하면/<. +?> /) (*) 대신에/< [^>] +> /가 엔진을 되돌려 보내는 데 드는 비용을 절약 할 수 있습니다. 일치하지만 텍스트의 큰 덩어리 안에서 일치해야하는 경우 많은주기가 절약됩니다.

그리고 정규 표현식 연산에서 자원을 절약하는 다른 많은 방법이 있으므로 성능이 크게 달라질 수 있습니다.

3

정규 표현식에 찍은. 다른 언어와 같은 언어의 서로 다른 버전은 다른 유형의 정규식을 가질 수 있습니다. 자연스럽게, 일부 정규 표현식은 더 빠르게 작동하고 일부는 다른 표현식에서 더 빠르게 작동합니다. 정말 중요한 경우, 어떤 유형의 정규식 FSM이 구현되어 있는지 찾을 수 있습니다.

저는 전문가가 아닙니다. Jeffrey E. F. Friedl이 읽고있는이 모든 것은 Mastering Regular Expressions입니다. 그걸 보길 원할 겁니다.

2

Regular Expression Matching Can Be Simple And Fast 또는 Understanding Regular Expressions과 같은 기사로 관심을 가질 수 있습니다.

비효율적 인 RE를 작성하는 것은 쉽지만 성공시 매우 빠르게 일치 할 수 있지만 일치하지 않으면 몇 시간 동안 볼 수 있습니다. 긴 문자열의 모든 위치에서 엔진이 어색하게 시도하기 때문입니다!

,이에 대한 몇 가지 요리법이있다 등 거대 전자 메일 발현 최근하지, 반드시 감속 아니라고

참고 가능 때마다, 고정 탐욕 가능하면 피 같은 : 짧은 , 간단한 표현은 더 복잡 한 것보다 느릴 수 있습니다!

전자 메일과 같은 상황에서는 @에서 분할하여 다른 경우를 처리하는 것과 같이 정규 표현식과 코드를 혼합하여 사용하는 것이 더 효율적 (유지 관리 가능) 할 수 있습니다 첫 번째 부분은 시작 "여부, 두 번째 부분은

정규 표현식에 모든 것을 할 수 궁극적 인 도구 아니다. IP 주소 또는 도메인 등)이지만, 주인에게 가치가 매우 유용한 도구입니다!

1

일반적으로 코드에 대해 말할 수있는 것 이상으로 정규 표현식에 관해서는 말할 수 없습니다.

정규식은 거의 프로그램이 아닙니다. 자신의 것. 주어진 프로그램이 빠르거나 느릴 수있는 것처럼, 주어진 정규 표현식은 빠르거나 느릴 수 있습니다.

그러나 기억해야 할 것은 정규식 처리기가 작업을 수행하고 정규식을 빠르게 실행하는 데 매우 최적화되어 있다는 것입니다.

관련 문제