2011-01-02 5 views
1

간단한 루비 정규식 :내가 루비의 문자열이 질문

str = "<TAG1>Text 1<TAG1>Text 2" 

나는이 같은 문자열 얻기 위해 GSUB를 사용하려면 : 즉

want = "<TAG2>Text 1</TAG2><TAG2>Text2</TAG2>" 

, 나는 모든 것을 저장할 <TAG1>과 다음 중 하나 : 1) 다음 번에 "<"또는 2) 문자열의 끝. 내가 가지고 올 수

가장 좋은 정규식이었다

regex = /<TAG1>(.*)(?:<|$)/ 

그러나이 문제는 그냥 내가 원하는 것은 캐릭터 라인 내에서 모두 일치하는 것입니다 전체 STR를 일치 것이라는 점이다. (즉, 문자열 char ($)의 끝이 "<"문자보다 우선 순위가 높은 것처럼 보입니다. 문자를 뒤집을 수있는 방법이 있습니까?

답변

3

/<TAG1>([^<]*)/< 그렇지 않으면 문자열이 끝까지 이동하게되고 그렇지 않으면 문자열이 <에 도달 할 때 멈추게됩니다. 문제는 해당 문자가 <과 일치하는 것입니다. 또 다른 방법은 /<TAG1>(.*?)(?:<|$)/ 일 것이므로 *은 욕심이 없습니다. .