2014-09-01 3 views
0

나는 여러 키워드가있을 수있는 #hashtag로 시작하는 모든 키워드를 찾고 이미 존재하는 개체에 대한 링크로 바꾸는 텍스트 필드가 필요합니다.찾기 및 바꾸기 RegEx

해시 태그에서 find을 수행해야하며 존재하는 경우 링크로 바꿔야합니다.

#goofy은 존재하는 경우 http://www.test.com/i/goofy으로 대체해야합니다.

The RegEx : /(?:\s|^)(?:#(?!(?:\d+|\w+?_|_\w+?)(?:\s|$)))(\w+)(?=\s|$)/i.

어떻게 접근하는 것이 가장 좋을까요?

나는 링크가있는 키워드의 모든 인스턴스를 대체하는 방법에 집착하고 있습니다.

+0

무엇'# (\ S +)', http://regex101.com/r/vW2pQ7/9에 대해? –

+0

정규식 잘 작동합니다 (WIP 포함 예외 정확히 처리 할 수있는 예외 처리). 나는 그것을 대체하는 방법에 붙어있다. –

+0

나는 gsub 명령을 사용해야한다고 생각한다. –

답변

1

당신은 String#gsub를 사용할 수 있습니다

re = /(?:\s|^)(?:#(?!(?:\d+|\w+?_|_\w+?)(?:\s|$)))(\w+)(?=\s|$)/i 

"#goofy".gsub(re, 'http://www.test.com/i/\1') 
#=> "http://www.test.com/i/goofy" 

\1

첫 번째 캡처 그룹을 의미한다.

하지만, 정규 표현식에 문제가 발생한 것 같습니다 :

"123 #goofy".gsub(re, 'http://www.test.com/i/\1') 
#=> "123http://www.test.com/i/goofy" 
#  ^no whitespace 
+0

정규식을 미세 조정합니다. 이것은 하나 이상의 인스턴스가 올바르게 작동합니다? gsub (re, #\1) 메신저에는 뭔가 근본적인 것이 빠졌을 것입니다. P –

+0

따옴표가 누락되었습니다. 'gsub (re,'#\1 ')' – Stefan

+0

Oh wow ... 고마워 Stefan –

관련 문제