2012-01-25 3 views
3

기본적으로 내 자신의 Markdown 파서를 작성하고 있습니다. 문자열에서 URL을 감지하고 유효한 URL 인 경우 앵커 태그로 감싸려고합니다. 예 :텍스트에서 URL을 찾아 앵커 태그로 감싸기

string = 'here is a link: http://google.com' 
# if string matches regex (which it does) 
# should return: 
'here is a link: <a href="http://google.com">http://google.com</a>' 

# but this would remain unchanged: 
string 'here is a link: google.com' 

어떻게하면됩니까?

예를 들어 사용할 수있는 기존 Ruby markdown 파서의 코드를 지적하면 보너스 포인트가 필요합니다. 일반적으로

+0

? 'http : //'? 'https : //'? 'ftp : //'? 'irc : //'? '텔넷 : //'? – Phrogz

+1

다음은 Kramdown에서의 작업 방법입니다.

+0

참고 : 마지막 브래킷은 링크를 클릭하면 작동합니다. –

답변

10

:이 특정 솔루션이 텍스트 설정됩니다

urls = %r{(?:https?|ftp|mailto)://\S+}i 
html = str.gsub urls, '<a href="\0">\0</a>' 

참고 : URL을 찾아 당신의 HTML에서 그들을 포장 정규 표현식을 사용으로

See more at http://www.google.com. 

를 ... ...

See more at <a href="http://www.google.com.">http://www.google.com.</a> 

그래서 정규식을 사용하여 URL이 실제로 끝나는 위치를 파악할 수 있습니다. .

+0

정말 멋집니다. 감사 –

관련 문제