programing

Ruby %r{} 식

padding 2023. 6. 2. 20:11
반응형

Ruby %r{} 식

모델에는 필드가 있습니다.

validates :image_file_name, :format => { :with => %r{\.(gif|jpg|jpeg|png)$}i

저한테는 꽤 이상해 보여요.저는 이것이 정규 표현이라는 것을 알고 있습니다.하지만 저는 다음을 원합니다.

  • 정확히 무슨 뜻인지 알기 위해서요아이즈%r{value}와 동등한./value/?
  • 일반 Ruby regex 연산자로 대체할 수 있습니다./some regex/또는=~이것이 가능합니까?

%r{}에 해당합니다./.../regexp에서 '/'를 이스케이프할 필요 없이 사용할 수 있습니다.

%r{/home/user}

다음과 같습니다.

/\/home\/user/

이것은 가독성을 위해 구문 상품일 뿐입니다.

편집:

'{}' 대신 알파벳이 아닌 거의 모든 문자 쌍을 사용할 수 있습니다.다음과 같은 변형 모델도 마찬가지로 작동합니다.

%r!/home/user!
%r'/home/user'
%r(/home/user)

편집 2:

참고:%r{}xvariant는 공백을 무시하여 복잡한 정규식을 더 읽기 쉽게 만듭니다.GitHub의 Ruby 스타일 가이드의 예:

regexp = %r{
  start         # some text
  \s            # white space char
  (group)       # first group
  (?:alt1|alt2) # some alternation
  end
}x

와 함께%r모든 구분 기호를 사용할 수 있습니다.

사용할 수 있습니다.%r{}또는%r[]또는%r!!기타.

다른 딜리미터를 사용하는 것의 이점은 사용자가 데이터를 피할 필요가 없다는 것입니다./일반 정규식 리터럴에서 사용됩니다.

\.=>에 점이 있습니다.
(gif|jpg|jpeg|png)=> 그러면, 이러한 확장 중 하나가
$=> 끝, 그 이후로는 아무것도.
i=> 대소문자 구분 안 함

그리고 그것은 쓰는 것과 같습니다./\.(gif|jpg|jpeg|png)$/i.

이 regexp는 .gif, .jpg...로 끝나는 모든 문자열과 일치합니다.

당신은 그것을 대체할 수 있습니다.

/\.(gif|jpg|jpeg|png)$/i

그 말이죠.image_file_name끝나야 함($) gif, jpg, jpg 또는 png 중 하나와 함께 표시됩니다.

네.%r{}와 정확히 같은 뜻입니다.//그러나%r{}도망갈 필요 없어요/.

언급URL : https://stackoverflow.com/questions/12384704/the-ruby-r-expression

반응형