반응형
모든 정규식 일치
Ruby에서 정규식과 일치하는 모든 것을 찾는 빠른 방법이 있습니까? Ruby STL의 Regex 개체를 살펴본 결과 Google에서 아무 소용이 없었습니다.
사용 scan
하면 트릭을 수행해야합니다.
string.scan(/regex/)
일치하는 모든 문자열을 찾으려면 클래스의 scan
메서드를 사용하십시오 String
.
str = "A 54mpl3 string w1th 7 numb3rs scatter36 ar0und"
str.scan(/\d+/)
#=> ["54", "3", "1", "7", "3", "36", "0"]
클래스의 메소드가 MatchData
반환하는 객체의 유형을 원하는 경우 다음을 사용하십시오.match
Regexp
str.to_enum(:scan, /\d+/).map { Regexp.last_match }
#=> [#<MatchData "54">, #<MatchData "3">, #<MatchData "1">, #<MatchData "7">, #<MatchData "3">, #<MatchData "36">, #<MatchData "0">]
갖는 이점은 MatchData
다음과 같은 방법을 사용할 수 있다는 것입니다.offset
match_datas = str.to_enum(:scan, /\d+/).map { Regexp.last_match }
match_datas[0].offset(0)
#=> [2, 4]
match_datas[1].offset(0)
#=> [7, 8]
자세한 내용을 알고 싶다면이 질문도 참조하십시오
. 문자열에서 Ruby 정규식의 모든 발생에 대한 일치 데이터를 얻으려면 어떻게해야합니까?
명명 된 캡처를 지원 하는 Ruby 정규식 일치 열거 자 Ruby
에서 각 일치의 시작 지점을 찾는 방법
특수 변수에 대해 읽기 $&
, $'
, $1
, $2
루비에 매우 도움이 될 것입니다.
그룹이있는 정규 표현식이있는 경우 :
str="A 54mpl3 string w1th 7 numbers scatter3r ar0und"
re=/(\d+)[m-t]/
문자열 방법 스캔을 사용하여 일치하는 그룹을 찾습니다.
str.scan re
#> [["54"], ["1"], ["3"]]
일치하는 패턴을 찾으려면 :
str.to_enum(:scan,re).map {$&}
#> ["54m", "1t", "3r"]
참고 URL : https://stackoverflow.com/questions/80357/match-all-occurrences-of-a-regex
반응형
'Program Tip' 카테고리의 다른 글
std :: move () 란 무엇이며 언제 사용해야합니까? (0) | 2020.10.03 |
---|---|
ExpandoObject의 진정한 이점은 무엇입니까? (0) | 2020.10.03 |
브랜치를 변경하지 않고 다른 Git 브랜치에서 파일보기 (0) | 2020.10.03 |
체크 아웃을 사용하지 않고 Git 브랜치를 병합, 업데이트 및 가져 오기 (0) | 2020.10.03 |
SpringData JPA에서 CrudRepository와 JpaRepository 인터페이스의 차이점은 무엇입니까? (0) | 2020.10.03 |