source

정규식을 사용하여 Ruby 문자열에서 부분 문자열 추출

manysource 2023. 6. 29. 20:13

정규식을 사용하여 Ruby 문자열에서 부분 문자열 추출

루비의 문자열 내에서 하위 문자열을 추출하려면 어떻게 해야 합니까?

예:

String1 = "<name> <substring>"

추출합니다.substring부터String1(즉, 마지막으로 발생한 모든 것)<그리고.>).

"<name> <substring>"[/.*<([^>]*)/,1]
=> "substring"

사용할 필요 없음scan만약 우리가 단 하나의 결과만 필요하다면요.
Python의 기능을 사용할 필요가 없습니다.match우리가 루비의 것을 가질 때.String[regexp,#].

참조: http://ruby-doc.org/core/String.html#method-i-5B-5D

참고:str[regexp, capture] → new_str or nil

String1.scan(/<([^>]*)>/).last.first

scan각각을 위해 배열을 만듭니다.<item>안에String1사이의 텍스트를 포함합니다.<그리고>1-벡터 어레이(캡처 그룹을 포함하는 정규식과 함께 사용할 경우 검색은 각 일치 항목에 대한 캡처를 포함하는 어레이를 생성하기 때문) last마지막 어레이를 제공합니다.first그러면 그 안에 있는 끈을 줍니다.

정규 표현을 쉽게 사용할 수 있습니다.

단어 주위에 공백 허용(보관하지 않음):

str.match(/< ?([^>]+) ?>\Z/)[1]

또는 허용된 공간이 없는 경우:

str.match(/<([^>]+)>\Z/)[1]

다음은 다음과 같은 방법을 사용하여 조금 더 유연한 것입니다.match방법.이를 통해 둘 이상의 문자열을 추출할 수 있습니다.

s = "<ants> <pants>"
matchdata = s.match(/<([^>]*)> <([^>]*)>/)

# Use 'captures' to get an array of the captures
matchdata.captures   # ["ants","pants"]

# Or use raw indices
matchdata[0]   # whole regex match: "<ants> <pants>"
matchdata[1]   # first capture: "ants"
matchdata[2]   # second capture: "pants"

더 간단한 검색은 다음과 같습니다.

String1.scan(/<(\S+)>/).last

언급URL : https://stackoverflow.com/questions/4115115/extract-a-substring-from-a-string-in-ruby-using-a-regular-expression