답변:
시도해 볼 수 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"
capture
전체 일치 대신 캡처를 반환 할 수 있는 인수를 찾았 기 때문입니다 .
당신은 사용할 수 있습니다 []
: (같이이다 match
)
"foo+account2@gmail.com"[/\+([^@]+)/, 1] # matches capture group 1, i.e. what is inside ()
# => "account2"
"foo+account2@gmail.com"[/\+([^@]+)/] # matches capture group 0, i.e. the whole match
# => "+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"
regex =~ string", not when
문자열 = ~ regex` 일 때만 작동합니다.
정규식 (regex)은 FSM (유한 상태 머신) 일뿐입니다.
FSM은 "이 상태가 가능합니까?"라는 질문에 대답하려고합니다.
일치가 발견 될 때까지 (성공) 또는 모든 경로가 탐색되고 일치가 발견되지 않을 때까지 (실패) 패턴 일치를 계속 시도합니다.
성공하면 "이 상태가 가능합니까?"라는 질문이 나타납니다. "예"로 대답했습니다. 따라서 더 이상 일치가 필요하지 않으며 정규식이 반환됩니다.
또한 다음 은 정규식이 작동하는 방식을 보여주는 흥미로운 예 입니다. 여기서 정규식은 주어진 숫자가 소수인지 감지하는 데 사용됩니다. 이 예제는 펄에 있지만 루비로도 작성할 수 있습니다.