이것은 당신이 기대하는 질문이 아닐 수도 있습니다! 줄 바꿈을 통해 일치하는 정규식을 원하지 않습니다. 대신 가독성을 위해 여러 줄의 코드로 나누고 싶은 긴 정규식을 작성하고 싶습니다.
다음과 같은 것 :
"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/
/myregex/x
2) (? on-off) 구문을 사용하여 자유 간격 모드를 전환 할 수 있습니다 /myregex(?x) with free spacing/
. 3) %r{myregex}x
구문을 사용할 수 있습니다 .
정규식 중간 표현을 자르는 대신 부분으로 나누는 것이 좋습니다.
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}/
긴 문자열에 대해서도 똑같이합니다.
/x
뿌려야했기 때문에 수정자를 추천하는 다른 사람들 보다이 대답을 사용했습니다 \s
. 정규식을 분리하는 것은 훨씬 빠르고 읽기 및 유지 관리가 더 쉬웠습니다.