이 문서를 보았습니다 : https://swtch.com/~rsc/regexp/regexp1.html Perl, Java 및 기타 많은 언어에서 재귀 백 트레이스를 기반으로하는 "느린"RegExp를 사용하지만 grep 및 awk (Go도)는 훨씬 빠른 유한 자동 표시를 사용한다고 주장합니다. 나는. regexp는 FA로 변환되어 실행됩니다. 이 신문은 또한 모든 언어가 구현이 더 복잡하지만 FA 기술로 전환해야한다고 주장합니다. 현재 자바 스크립트 구현에 편이성이 있는지 궁금합니다.유한 오토마타 또는 재귀 백 트레이스를 기반으로하는 v8/firefox RegExp 구현입니까?
0
A
답변
1
V8의 regexp 엔진 "Irregexp"는 자동차 데이터를 기반으로합니다 (https://blog.chromium.org/2009/02/irregexp-google-chromes-new-regexp.html 참조).
Firefox는 요즘 V8의 Irregexp 포크 (https://bugzilla.mozilla.org/show_bug.cgi?id=976446 참조)를 사용하므로 오토 마타에도 기반합니다.
JS regex는 Perl과 유사하지만 (https://www.ecma-international.org/ecma-262/5.1/#sec-15.10) 엔진이 "느린"것은 아닙니다. 이 기사에서 사용 된 패턴은 너무 인공적이어서 'a? a? aaa'는'a {3,6}'으로 작성되어야하며 가능한 빠릅니다. 이것은 나쁜 패턴이 정규 표현식 실행을 늦출 수있는 예에 불과합니다. 패턴을 올바르게 작성하고 "올바른"작업을 수행하면 정규 표현식에 어떤 언어로도 큰 어려움이 없을 것입니다. –
정말 코딩 문제가 아닙니다 ... 누구든지 V8 및 SpiderMonkey (firefox의 현재 JS 엔진)에 대한 소스 코드를 검색하고 찾을 수 있습니다. –