[ruby] Ruby 정규식을 여러 줄로 분할
이것은 당신이 기대하는 질문이 아닐 수도 있습니다! 줄 바꿈을 통해 일치하는 정규식을 원하지 않습니다. 대신 가독성을 위해 여러 줄의 코드로 나누고 싶은 긴 정규식을 작성하고 싶습니다.
다음과 같은 것 :
"bar" =~ /(foo|
bar)/ # Doesn't work!
# => nil. Would like => 0
할 수 있습니까?
답변
답변
x 옵션과 함께 % r을 사용하는 것이 선호되는 방법입니다.
github ruby 스타일 가이드에서이 예제를 참조하세요.
regexp = %r{
start # some text
\s # white space char
(group) # first group
(?:alt1|alt2) # some alternation
end
}x
regexp.match? "start groupalt2end"
https://github.com/github/rubocop-github/blob/master/STYLEGUIDE.md#regular-expressions
답변
당신이 사용할 수있는:
"bar" =~ /(?x)foo|
bar/
답변
정규식 중간 표현을 자르는 대신 부분으로 나누는 것이 좋습니다.
full_rgx = /This is a message\. A phone number: \d{10}\. A timestamp: \d*?/
msg = /This is a message\./
phone = /A phone number: \d{10}\./
tstamp = /A timestamp: \d*?/
/#{msg} #{phone} #{tstamp}/
긴 문자열에 대해서도 똑같이합니다.