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{}x
variant는 공백을 무시하여 복잡한 정규식을 더 읽기 쉽게 만듭니다.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
'programing' 카테고리의 다른 글
안드로이드 레이아웃 파일에서 "tools:context"는 무엇입니까? (0) | 2023.06.02 |
---|---|
C#에서 프로세스를 시작하려면 어떻게 해야 합니까? (0) | 2023.06.02 |
소수점 이하 두 자리까지 소수점 이하 값을 표시하려면 어떻게 해야 합니까? (0) | 2023.06.02 |
AzureBob 업로드 오류: 지정한 BLOB가 이미 있습니다. (0) | 2023.05.28 |
해결 방법: "현재 중단점이 적용되지 않습니다.이 문서에 대한 기호가 로드되지 않았습니다." 경고? (0) | 2023.05.28 |