2010-08-16 8 views
-2

내 파일에서 _ ("") 사이의 모든 문자열을 가져 오려고합니다.ruby에서 _ ("") 사이에 내용 가져 오기

어떻게 가져올 수 있습니까? 당신이 찾고있는 문자열 내에 중첩에는 인용 부호가없는 가정

+0

를 사용하려면 당신은 큰 따옴표 안에 문자열을 원하는 있는가, 또는 이중 한 쌍의 내 괄호로 묶인 따옴표? –

+0

foo _ ("bar _ ("baz ")")'와 같이 중첩 된'_ ("")'? – sepp2k

+0

@ sepp2k : 일반적으로 중첩이 문제가 있다는 것이 확실한 경우가 아니라면 일반적으로 중첩에 대해 불평하기보다는 정규식 질문에 답해야합니다. 문자열이 중첩되어 있으면 작동하지 않는다는 경고를 항상 언급 할 수 있지만 질문에 답하기 위해 철저히 거부하는 것은 무례합니다. 이 경우, 문자열의 모든'gettext'에'_()'을 사용하는 것이 일반적입니다. 그래서 그가하려는 것은 파일을 스캔하여 지역화 될 필요가있는 모든 문자열을 찾는 것입니다 - '_ ("baz")'는 내가 아는 인간 언어의 단어가 아니기 때문에 중첩을 포함하지 않을 것입니다. –

답변

0

, 당신은 다음 정규 표현식을 사용하여 문자열을 검색 문자열

str=File.read("/path/to/file") 

로 파일을로드 할. 다음 정규 표현식은 트릭을 수행해야합니다. 문자 _("을 찾습니다 (괄호는 정규 표현식에서 특별한 의미가 있으므로 여기에 열린 괄호는 이스케이프됩니다). 다음 괄호는 캡처 그룹을 시작하여 문자열의 텍스트가 특수 변수 $1에 저장되고 첫 번째 따옴표까지 연속되는 문자열이 발견되면 캡처 그룹을 종료합니다 (이스케이프 처리되지 않은 닫는 괄호)는 ")가 식을 완료 찾습니다.

/_\("([^"]*)"\)/ 

은? 당신이 당신의 질문을 명확히 주시겠습니까 그것을

str.scan(/_\("([^"]*)"\)/) do 
    puts $1 
end 
관련 문제