정규 표현 식 성능 최적화 방법(고 효율 정규 표현 식 쓰기)

여기 서 말 하 는 정규 표현 식 최 적 화 는 주로 현재 자주 사용 되 는 NFA 모델 정규 표현 식 에 대한 것 입 니 다.상세 한 것 은 다음 과 같 습 니 다정규 표현 식 일치 분석 과정 분석(정규 표현 식 일치 원리)위의 예 에서 우 리 는 NFA 류 정규 표현 식(일반적인 언어:GNU Emacs,Java,ergp,less,more,.NET 언어,
PCRE library,Perl,PHP,Python,Ruby,sed,vi)는 주로 그의'역 추적'이 고'역 추적'횟수 를 줄 이 는 것(같은 문 자 를 반복 적 으로 찾 는 횟수 를 줄 이 는 것)이 성능 을 향상 시 키 는 주요 한 방법 이다.우 리 는 예 를 보 자.
원본 문자열:adsfadfsdasfsdafdsfsadfsa
일치 요구,일치...탭 에 있 는 모든 내용 은 탭 변경 을 포함 합 니 다.
흔히 볼 수 있 는 쓰기(1)는정규 표현 식:.*?(테스트 도구 사용:regexBuddy)

모두 115 보 를 써 서 48 회 거 슬러 올 라 갔다."."문 자 를 사용 하기 때문에 기본 적 인 상황 에서 제외 한 모든 문 자 를 일치 합 니 다.
방법(2),우리 가 특징 을 분석 한 결과,뒤 에는'>'를 제외 하고 모두 문 자 를 사용 할 수 있 을 것 입 니 다.그리고태그 에 있 는 js 내용 입 니 다."<"를 제외 한 것 으로 정의 할 수 있 습 니 다.이 안에 나 는 단지 최적화 방법 을 예 를 들 어 설명 할 뿐이다.실제 웹 페이지 에서 script 태그 안에 흔히'<'문자 가 나타난다)
정규 표현 식:]+>[^<]+


19 보,0 차 역 추적!절 차 는 원래 의 15%정도 만 있 고 성능 이 몇 배로 향상 되 었 습 니 다!
위 에서 보 듯 이 정규 표현 식 에 따라 통용 문자 에 대해 평평 하 게 배치 하면 성능 차이 가 매우 크다.'역 추적'을 줄 이 는 것 이 가장 좋 은 방법 이다.역 추적 을 줄 이 는 가장 중요 한 방법 은'최소 범위 의 메타 문 자 를 사용 하고 너무 큰 메타 문 자 를 사용 하지 않도록 하 는 것 이다!'이다.일반 규칙 은 다음 과 같다.
1.올 바른 경계 매 칭 기(^,$,\b,\B 등)를 사용 하여 검색 문자열 의 위 치 를 제한 합 니 다.
2.구체 적 인 메타 문자,문자 클래스(\d,\w,\s 등)를 사용 하고 적 게 사용 합 니 다."문자
3.정확 한 양사 사용(+,*,?,{n,m})길 이 를 제한 할 수 있다 면 최 적 화 됩 니 다.
4.비 포획 그룹,원자 그룹 을 사용 하여 불필요 한 글자 일치 포획 용(?:)을 감소 합 니 다.
예 를 들 어 영어 알파벳 과 일치 하고 싶 습 니 다.그 뒤에 숫자 가 연결 되 어 있 습 니 다.예 를 들 어 abc 1234 는'\w+\d+'라 고 쓸 수도 있 고 쓸 수도 있 습 니 다.'[a-zA-Z]+\d+'라 고 쓸 수도 있 습 니 다.그 중에서 첫 번 째\w+는 모든 abc 1234 와 일치 한 다음 에 거 슬러 올 라 가 만족\d+형식 과 일치 합 니 다.모두 4 보 입 니 다.뒤에 이 건 2 보,절차 가 반 으로 줄 었 습 니 다!자,오늘 은 여기까지 하 겠 습 니 다.여러분 의 토론 과 교 류 를 환영 합 니 다!

좋은 웹페이지 즐겨찾기