2010-02-13 1 views
0

내 코드의 일부에서 일치하는 URL을 사용합니다. 이제 정규식을 사용합니다. 이것은 괜찮지 만 항상 "좋은"간단하게 읽을 수있는 패턴을 생성하지는 않습니다. 일치하는 URL에 대해 정의 된 언어가 있습니까? 그것은 다음과 같아야합니다 : http://*.example.com/* 그래서 단순히 와일드 카드와 URL에 유용한 것들이있을 것입니다.URL에서 regexp와 유사한 언어로 패턴을 일치하지만 URL에 특정 됨

이 표현식을 regexp로 간단하게 변형 할 수 있다면 가장 좋을 것입니다. 그런 언어에 대한 명세, 또는 심지어는 루비에 대한 구현을 알고 있습니까? 그렇지 않으면 나는 그것을 직접 구현합니다 ... 핵심은 패턴의 가독성입니다. 도와 주셔서 감사합니다!

답변

0

시작하기 전에 신중하게 구문을 작성해야합니다. 언뜻보기에, 당신이하려는 것은 쉽게 일반 정규 표현식에로 구문을 번역함으로써 달성 될 것입니다 :

s = 'http://*.example.com/*' #=> "http://*.example.com/*" 
r = Regexp.compile("^#{Regexp.escape(s).gsub('\*','.*')}$") #=> http:examplecom 
'http://test.example.com/path/to/doc.html' =~ r #=> 0 
'http://test.example2.com/path/to/doc.html' =~ r #=> nil 
0

URL은 당신이 표준을 준수되고 싶어요 특히, 올바르게 구문 분석 할 조금 까다로울 수있다. 이것이 루비가 내장 라이브러리 인 uri을 가지고있는 이유입니다.

원하는 고급 자리 표시자가있는 구문 분석 라이브러리의 경우 addressable gem.

을 조사해야합니다.