2017-12-08 5 views
0

가장 오른쪽의 슬래시 발생을 기준으로 경로 문자열을 분할하려고합니다. 폴더 깊이는 가변적입니다 - 나는 얼마나 많은 슬래시가 있는지 알 수 없습니다. 이 정규식을 만들 수 있습니까? SPLIT 함수에 대해 HIVE 쿼리에 사용합니다.Regex - 가장 오른쪽 슬래시 발생시 문자열 분할 [Hive]

:

문자열 1 :

/IP/backup_jun20_2017/proddb/application_profile/mth_end_dt=2016-10-31 

strin

/IP/backup_jun20_2017/proddb/application_profile/mth_end_dt=2016-10-31/000000_0 

분할 후

원래 문자열 g 2 :

000000_0 

답변

3

시도는 두 그룹 (.*) 마지막 슬래시 전에 첫 번째 일치 (.*)\/(.*?)$ 또는 (.*)\/([^\/]+)

이, 마지막 슬래시에 이어 두 번째 그룹이 \/(.*?)$처럼 그것을 얻을 수있는이 정규식을 사용하는 또는 ([^\/]+)

+0

bash 정규식에서는 잘 작동하지만, HIVE에서는 SPLIT 함수에 필요합니다. 미안하지만 질문에 언급하지 않았습니다. Hive에서는 id가 작동하지 않습니다. SPLIT은 문자열을 부분으로 잘라 내지 않습니다. –

+0

@OlegHmelnits 하이브에 익숙하지 않지만 빠른 검색을 사용하면 분할을 사용하지 않을 수도 있습니다. regexp_extract ('/ IP/backup_jun20_2017/proddb/application_profile/mth_end_dt = 2016-10-31/000000_0' ('/ IP/backup_jun20_2017/proddb/application_profile/mth_end_dt = 2016-10-31/000000_0', '^ (1 *))', . *) \/([^ \ /] +) ', 2) result2'가 작동한다면 알려주시겠습니까? –

+1

당신은 내 영웅입니다! :) 그것은 작동합니다! –