2013-06-29 4 views
0

BBcode에 코딩 된 여러 개의 URL이 포함 된 긴 문자열이 있습니다. 예를 들어, 내 문자열의 일부가 :문자열의 첫 번째와 마지막 항목을 바꾸는 방법

"...[url=http://example1.com][img]http://picture.com/1.jpg[/img][/url] 
[url=http://example2.com][img]http://picture.com/2.jpg[/img][/url] 
[url=http://example3.com][img]http://picture.com/3.jpg[/img][/url]..." 

전과 "..." 후 라인이 포함되어 있지만 더 이상 선이 "[url=""[/url]"을 포함하지 않습니다.

"...[spoiler][url=http://example1.com][img]http://picture.com/1.jpg[/img][/url] 
[url=http://example2.com][img]http://picture.com/2.jpg[/img][/url] 
[url=http://example3.com][img]http://picture.com/3.jpg[/img][/url][/spoiler]..." 

어떻게 루비와이를 달성 할 수 있습니다 나는 "[spoiler][url=]""[url="의 첫 번째 항목이를 얻기 "[/url][/spoiler]""[/url]"의 마지막 항목을 바꾸시겠습니까?

+2

정규 표현식에 대해서는 아직 생각하지 못했지만이 문자열의 생성을 제어합니까? 문자열이 처음 생성되었을 때 그 스포일러 조각을 문자열에 삽입하는 것이 더 쉽습니다. – dsw88

+0

아니요, 통제 할 권한이 없습니다. 비슷한 문자열이 너무 많아서 '해치려'해야합니다. – Konstantin

답변

4

이 작업을 시도 할 수 있습니다 :

str = str.sub(/\[url=.+\[\/url\]/m, '[spoiler]\0[/spoiler]') 

아이디어는 (태그 포함) 자체는 대체 문자열에서 후 전 [spoiler][/spoiler]을 추가하는 모든 코드 블록 첫 [url..] 마지막 [/url] 사이에 교체하는 것입니다.

한정자 +은 욕심이 많으므로 하위 문자열 [/url]이 마지막이어야합니다.

+0

우수한 텍스트 저글 +1. –

+0

@Denomales : <°))))> 고마워! –

+0

Thx, 아주 좋은 생각인데, 그 동안 "sub"와 "reverse"로 해결했습니다 ... – Konstantin

관련 문제