저는 자바 스크립트로 작업하고 있지만 일반적인 정규식 질문이라고 생각합니다.등거리 문자에 대한 특정 정규식 검색 최적화
문자 사이의 거리가 같은 긴 문자열의 하위 문자열을 검색하는 스크립트를 작성하고 있습니다. 예를 들어, 텍스트 a11b22c33d44
에서 두 개의 연속 된 문자 사이에 거리가 2 인 문자열 abcd
이 있습니다.
위의 예제에서 정규 표현식 /a.{2}b.{2}c.{2}d/
을 검색하면 regexp 검색을 사용하여 이러한 문자열을 찾는 것이 간단합니다. 제가 지금하고있는 일은 이것입니다 : 검색 할 단어와 연속 된 문자 사이의 거리를 주어 간단히 .{n}
(n은 거리) 사이에 넣고 이것을 정규 표현식으로 컴파일하고 나머지 작업을하도록하십시오. .
글자 사이의 거리가 작 으면 (예 : 약 1000)이 방법은 실제로 잘 작동합니다. 이후에는 속도가 느려집니다. 여전히 작동하지만 동일한 검색을보다 효율적으로 수행 할 수있는 또 다른 방법이 있기를 바랍니다. 더 큰 차이가 나는 이유는 분명하지 않습니다. (전체 텍스트를 한 번만 읽어야합니다.)
당신은 regexp'a. {2} b. {2} c. {2} d'도'aaabbbcccd '와 일치 할 것입니다 - 이것은 의도적입니까? – hochl
예, aaabbbcccd에는 문자 사이에 거리가 2 인 부분 문자열로 "abcd"가 포함되어 있기 때문입니다. –