2017-03-28 2 views
0

S3 URI에서 S3 버킷 이름을 얻기 위해 정규 표현식을 사용하려고했지만 행운이 없었습니다.S3 URI에서 S3 버킷 이름을 선택하는 정규식

예 : s3://example-bucket/file-name.filetype

나는이 함께 얻을 수있는 가장 가까운 : \/\/([^\/].*[^\/])\/을하지만 난 결과

+0

(다른 옵션은 일치 슬래시를 제거하기 위해 귀하의 일치 ​​그룹을 액세스하는 것) : '\/\/([^ \ /] +)' – abhishekkannojia

답변

1

부분에서 슬래시를 부정하는 방법을 잘 모르겠어요 ([^/]+)있는 문자의 순서를 찾고 있습니다 슬래시가 아닙니다. 당신이 //([^/]+)/을 쓸 수 있던 무슨과의 긴밀한 유지하지만 당신이 lookbehind (?<=//)를 사용 및/또는 (?=/)

(?<=//)([^/]+)(?=/) 

(귀하의 사용 사례 몇 가지에 따라 내다 수

//([^/]+) 

옵션과 동일

특히 'lookbehind'는 모든 regexp 방언에서 지원되지 않습니다. 예 : 당신이 lookbehind 옵션 (자바 스크립트 정규식)가 없습니다, 당신의 URL 구조가 충분히 일관 아닌 경우 자바 스크립트

Debuggex Demo

+0

lookbehind는 괜찮습니다. lookbehind가없는 javascript를 사용하지 않는 한. (가능성이있는 경우) – sweaver2112

+0

다른 방법보다 lookahead/lookbehind를 사용하면 어떤 이점이 있습니까? 내가 개인적으로 더 "읽기 쉽다"는 것을 제외하고, 나는 추측합니까? – Leon

1

에, 아마도이 패턴은 도움이 될 것입니다 :

[^\/]+(?=\/[^\/])

영어 : "하나 이상의 슬래시와 슬래시가 일치하지 않는 하나 이상의 슬래시와 일치합니다 (실제로는 미리보기를 통해 일치하지 않음).

이를 사용해보십시오

https://regex101.com/r/XM05Sw/2/