Ruby 정규식의 첫 번째 일치 항목 반환
Ruby의 문자열에서 정규식 일치를 수행하고 첫 번째 일치에서 단락시키는 방법을 찾고 있습니다.
처리중인 문자열은 길고 표준 방식 ( match
메서드)이 전체를 처리하고 각 일치 항목을 수집하며 모든 일치 항목을 포함하는 MatchData 개체를 반환합니다.
match = string.match(/regex/)[0].to_s
시도해 볼 수 variableName[/regular expression/]
있습니다. 다음은 irb의 출력 예입니다.
irb(main):003:0> names = "erik kalle johan anders erik kalle johan anders"
=> "erik kalle johan anders erik kalle johan anders"
irb(main):004:0> names[/kalle/]
=> "kalle"
당신은 사용할 수 있습니다 []
: (같이이다 match
)
"foo+account2@gmail.com"[/\+([^@]+)/, 1] # matches what is inside ()
# => "account2"
"foo+account2@gmail.com"[/\+([^@]+)/, 0] # matches whole regexp
# => "+account2"
일치의 존재 만 중요한 경우에는
/regexp/ =~ "string"
어느 쪽이든 전체 문자열 match
을 scan
검색 하는 동안 첫 번째 히트 만 반환해야 합니다. 따라서
matchData = "string string".match(/string/)
matchData[0] # => "string"
matchData[1] # => nil - it's the first capture group not a second match
이 기능이 굉장한 지 완전히 미친지는 아직 확실하지 않지만 정규식은 지역 변수를 정의 할 수 있습니다.
/\$(?<dollars>\d+)\.(?<cents>\d+)/ =~ "$3.67" #=> 0
dollars #=> "3"
( http://ruby-doc.org/core-2.1.1/Regexp.html 에서 발췌 ).
정규식 (regex)은 FSM (유한 상태 머신) 일뿐입니다.
FSM은 "이 상태가 가능합니까?"라는 질문에 대답하려고합니다.
일치가 발견 될 때까지 (성공) 또는 모든 경로가 탐색되고 일치가 발견되지 않을 때까지 (실패) 패턴 일치를 계속 시도합니다.
성공하면 "이 상태가 가능합니까?"라는 질문이 나타납니다. "예"로 대답했습니다. 따라서 더 이상 일치가 필요하지 않으며 정규식이 반환됩니다.
또한 다음 은 정규식이 작동하는 방식을 보여주는 흥미로운 예 입니다. 여기서 정규식은 주어진 숫자가 소수인지 감지하는 데 사용됩니다. 이 예제는 펄에 있지만 루비로도 작성할 수 있습니다.
참고 URL : https://stackoverflow.com/questions/519572/return-first-match-of-ruby-regex
'Programing' 카테고리의 다른 글
ansible 인벤토리 파일에서 host_key_checking = false를 설정하는 방법은 무엇입니까? (0) | 2020.08.30 |
---|---|
Android 오류 [null 개체 참조에서 가상 메서드 'void android.app.ActionBar'호출 시도] (0) | 2020.08.30 |
Vim을 배우는 대화 형 방법이 있습니까? (0) | 2020.08.30 |
(마이너스) 스크롤바없이 화면 너비를 얻는 방법? (0) | 2020.08.30 |
Razor 뷰 내부에서 ModelState.IsValid를 어떻게 확인할 수 있습니까? (0) | 2020.08.30 |