2013-06-17 5 views
5

프로젝트에 Node.js를 사용하고 있으며 Javascript의 정규식 구문이 매우 제한적이라는 것을 알고 있습니다. 특히 lookhind의 부족은 나를 죽이고 있습니다. 정규식을 사용하여 문자열을 문장으로 구문 분석하려고하지만 문장을 깨지 않도록 Mr 및 Mrs.과 같은 일반적인 약어를 확인하려고합니다. regex 기능을 추가하는 Node.js 라이브러리가 있습니까? 그렇다면 무엇이 좋은 행동을 취할 것입니까? 그것은 자바 스크립트 정규 표현식에와 어려움의Node.js에서 더 나은 정규 표현식을 구현하는 방법

+0

'NPM 검색 regex'을. 또는 https://npmjs.org/search?q=regex –

+0

http://xregexp.com/은 Node.js와 함께 작동하지만 lookbehind 어설 션을 제공 할 수 없습니다. –

답변

1

노드 : 더 트릭에 대한

/((?:Mrs?\.)|[^\.]+)+/ # match all that is not a dot or Mr. or Mrs. 

을, 당신은이 사이트에서 좀 걸릴 수 있습니다 .js는 v8 엔진을 기반으로하며 regex 엔진은 v8의 일부입니다. v8 프로젝트는 여기에서 호스팅됩니다 : https://code.google.com/p/v8/. 정규식 엔진은 https://code.google.com/p/v8/source/browse/trunk/src/ia32/regexp-macro-assembler-ia32.cc?r=4966 파일에서 제공됩니다. 교장 상태에서 프로젝트를 포크하고 원하는 기능을 추가 할 수 있습니다. 나는 이것이 이것이 가치있는 것보다 더 많은 노력이 될 것이라고 생각한다.

정규식은 일반적으로 구문 분석 용으로 설계되지 않았습니다. Node.js를위한 많은 파싱 라이브러리가 여기에 있습니다 : https://npmjs.org/search?q=language+parsing. 직접 만든 핫 코코아 (https://github.com/olleicua/hot-cocoa)를 개인적으로 추천 할 수 있으며, 제 목적을 위해 완벽하게 작동했습니다. 당신의 목표 인 경우 첫 번째 경우

마지막으로 단지 다음과 같이 뭔가를 작동 할 수 있습니다 '미스터'또는 '부인'을 어떤 한 단어 또는 두 단어에 맞게 :

var text = 'Mr Potter and Mrs Smith were walking to the house of Mrs Sullivan'; 
text.match(/(?:Mr |Mrs)?\w+/g); 
// returns: [ 'Mr Potter', 'and', 'Mrs Smith', 'were', 'walking', 'to', 'the', 
//   'house', 'of', 'Mrs Sullivan' ] 
관련 문제