[ruby] Ruby 정규식을 여러 줄로 분할

이것은 당신이 기대하는 질문이 아닐 수도 있습니다! 줄 바꿈을 통해 일치하는 정규식을 원하지 않습니다. 대신 가독성을 위해 여러 줄의 코드로 나누고 싶은 긴 정규식을 작성하고 싶습니다.

다음과 같은 것 :

"bar" =~ /(foo|
           bar)/  # Doesn't work!
# => nil. Would like => 0

할 수 있습니까?



답변

자유 간격 모드/x 를 활성화 하는 수정자를 사용해야 합니다 .

귀하의 경우 :

"bar" =~ /(foo|
           bar)/x


답변

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}/

긴 문자열에 대해서도 똑같이합니다.


답변