Programing

Ruby 정규식의 첫 번째 일치 항목 반환

crosscheck 2020. 8. 30. 07:41
반응형

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"

어느 쪽이든 전체 문자열 matchscan검색 하는 동안 첫 번째 히트 만 반환해야 합니다. 따라서

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

반응형