2012-01-25 4 views
1

이 코드의 ID와 이름이 같은인 문자열을 구문 분석해야합니다.ruby ​​정규 표현식 문자열에 반복 일치를 대체하십시오.

문자열은 다음과 같이이다 :

text = "Hello {1,Micheal}, my name is {2,Shahar}, nice to meet you!" 

나는 그것을 구문 분석을 시도하고, 정규 표현식은 첫 번째 }을 건너 뛰고 I는 다음과 같이 얻을 :

text.gsub(/\{(.*),(.*)\}/, "\\2(\\1)") 
=> "Hello Shahar(1,Micheal}, my name is {2), nice to meet you!" 

필요한 resault 동안해야 be :

=> "Hello Michael(1), my name is Shahar(2), nice to meet you!" 

나는 도움을 줄 수있는 누구에게나 감사 할 것입니다.

감사 샤 하르 너무 많은

답변

1

욕심 .* 일치. "모든 문자열, 가능한 최대 길이"를 의미합니다. 그래서 첫 번째 (.*) 경기 1,Micheal}, my name is {2 후 쉼표는 쉼표 일치, 두 번째 (.*) 일치 Shahar을 (최종 \} 닫는 중괄호 일치합니다.

더 나은 더 구체적으로. 예를 들어, 당신은 단지 수 있도록 경기를 제한 할 수 있습니다 괄호를 제외한 문자는 경기가 {...} 섹션의 범위를 넘어 확장하지 않을 것을 보장하기 위해 :

text.gsub(/\{([^{}]*),([^{}]*)\}/, "\\2(\\1)") 

또는 당신이 할 수있는 :

text.gsub(/\{([^,]*),([^}]*)\}/, "\\2(\\1)") 

첫 번째 부분은 쉼표가없는 문자열 일 수 있고 두 번째 부분은 }이 포함되지 않은 문자열 일 수 있습니다.

+0

위대한, 그게 내 문제를 해결! 고마워요! – smintz

+0

여러분을 환영합니다! –

관련 문제