정규식을 사용하여 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
'source' 카테고리의 다른 글
Oracle SQL 저장 프로시저 호출 및실행 (0) | 2023.06.29 |
---|---|
Oracle에서 기본 키 열을 인덱싱해야 합니까? (0) | 2023.06.29 |
모든 변경된 파일이 부모 중 한 명과 동의하더라도 결합된 diff 출력으로 병합 커밋을 "git show"하는 방법은 무엇입니까? (0) | 2023.06.29 |
Spring boot: 여러 RestController에 대한 공통 경로 설정 방법 (0) | 2023.06.29 |
오라클의 이진 필드(블롭)에 대한 조건(예: "유사") (0) | 2023.06.29 |