루비 % r {} 표현식
모델에는 필드가 있습니다
validates :image_file_name, :format => { :with => %r{\.(gif|jpg|jpeg|png)$}i
나에게는 꽤 이상해 보인다. 나는 이것이 정규 표현식이라는 것을 알고 있습니다. 그러나 나는 원합니다 :
- 그것이 무엇을 의미하는지 아는 것. 가
%r{value}
동일/value/
? - 일반 Ruby 정규식 연산자
/some regex/
또는 로 대체 할 수 있습니다~=
. 가능합니까?
%r{}
/.../
표기법 과 동일 하지만 정규 표현식에서 이스케이프하지 않고 '/'를 가질 수 있습니다.
%r{/home/user}
다음과 같습니다.
/\/home\/user/
가독성을 위해 구문 상품 일뿐입니다.
편집하다:
'{}'대신 알파벳이 아닌 문자 쌍을 거의 모두 사용할 수 있습니다. 이러한 변형은 다음과 같이 작동합니다.
%r!/home/user!
%r'/home/user'
%r(/home/user)
편집 2 :
참고 그 %r{}x
복잡한 regexps '에 더 읽기 만들기 공백, 변형 무시합니다. GitHub의 Ruby 스타일 가이드의 예 :
regexp = %r{
start # some text
\s # white space char
(group) # first group
(?:alt1|alt2) # some alternation
end
}x
\.
=>는 점을 포함하고
(gif|jpg|jpeg|png)
=> 그런 다음 확장 중 하나
$
=> 끝, 그 뒤에 아무것도
i
=> 대소 문자 구분 안 함
그리고 쓰는 것과 같습니다 /\.(gif|jpg|jpeg|png)$/i
.
을 사용하면 %r
모든 구분 기호를 사용할 수 있습니다.
당신은 사용할 수 있습니다 %r{}
또는 %r[]
또는 %r!!
등
다른 델리 미터를 사용하면 /
일반 정규 표현식 리터럴에서 이스케이프 처리 할 필요가 없습니다 .
이 정규 표현식은 .gif, .jpg로 끝나는 모든 문자열과 일치합니다.
당신은 그것을 바꿀 수 있습니다
/\.(gif|jpg|jpeg|png)$/i
즉 , 점과 gif, jpg, jpeg 또는 png 중 하나로 image_file_name
끝나야합니다 ( $
).
예, %r{}
정확히 동일 //
하지만 %r{}
탈출 할 필요는 없습니다 /
.
참고 URL : https://stackoverflow.com/questions/12384704/the-ruby-r-expression
'Programing' 카테고리의 다른 글
C #에서 큰 파일에 대한 체크섬을 만드는 가장 빠른 방법은 무엇입니까 (0) | 2020.07.07 |
---|---|
마지막 요소를 얻는 XSLT (0) | 2020.07.07 |
vim의 모든 줄 끝에서 ^ M (0) | 2020.07.07 |
Javascript에서 키 / 값 객체를 반복하는 방법은 무엇입니까? (0) | 2020.07.07 |
내 Android Gradle 기반 프로젝트에 -Xlint : unchecked를 추가하는 방법은 무엇입니까? (0) | 2020.07.07 |