조건으로 콜론 문자를 분할하는 정규식 패턴

MaveRickZ

다음과 같은 문자열이 있습니다.

http://schemas/identity/claims/usertype:External

그런 다음 내 목표는 해당 문자열을 콜론 구분 기호로 두 단어로 분할하는 것이지만 정규식이 작동하는 방식을 지정해야하는 경우 콜론을 분할하지만 "http : //"에 콜론을 포함하지 않으므로 해당 문자열은 다음으로 분할됩니다. :

http://schemas/identity/claims/usertype
External

다음과 같은 정규식을 시도했습니다.

(http:\/\/+schemas\/identity\/claims\/usertype)

따라서 다음과 같습니다.

http://schemas/identity/claims/usertype
:External

그런 다음 나머지 콜론을 빈 문자열로 바꿉니다.

하지만 정규식을 거의 사용하지 않았기 때문에 모범 사례가 아니라고 생각합니다. 정규식을 단순화하기위한 제안이 있습니까?

미리 감사드립니다

rzwitserloot

이것은 X / Y 문제입니다. 다행스럽게도 해결하려는 근본적인 문제 (즉, URL에서 문자열 가져 오기)를 설명하고 문제를 해결하기 위해 선택한 방향을 설명하여 (나쁜 , 아래 참조),이 솔루션에 대한 문제에 대해 질문합니다 (전체 솔루션이 나쁘기 때문에 관련성이 없음).

URL은 이와 같이 구문 분석 할 수 없습니다. 이런 식으로 쪼갤 수있는 끈으로 취급해서는 안됩니다. 예를 들어 서버 부분에는 콜론도 포함될 수 있습니다. 포트 번호 용. 서버 부분 앞에 콜론을 포함 할 수있는 인증이있을 수 있습니다. 물론 거의 사용되지 않습니다.

접근 방식의 문제점을 보여주는 다음을 시도하십시오.

https : // joe : [email protected] : 443 /

그 링크는 작동합니다. 어쨌든 포트 443이 기본값이었고 Google은 전송을 끝내는 인증 헤더를 무시하지만 요점은 URL에 이러한 항목이 포함될 수 있다는 것입니다.

하지만 rzwitserloot, 그건 .. 안돼! 알아!

그것은 나쁜 프로그래밍 사고 방식입니다. 이러한 사고 방식은 보안 문제로 이어집니다. 명시되지 않은 가정으로 코드베이스에 부담을주는 솔루션을 선택하는 이유는 무엇입니까 (가정 :이 코드에 대한 URL을 제공하는 장소는 내 통제하에 있으며 포트 또는 인증 헤더를 보내지 않을 것입니다)? 구성 파일에서 '서버'부분을 구성 할 수있는 경우 해당 구성 파일에 포트를 추가 할 수 없다고 언급 하시겠습니까? 지금부터 4 년을 기억 하시나요?

올바르게 수행하는 솔루션은 이러한 모든 언급되지 않은 (또는 언급 된 경우 매우 다루기 힘든) 가정으로 코드에 부담을주지 않을 것입니다.

좋아요, 올바른 방법은 무엇입니까?

먼저 해당 문자열을 java.net.URI. 그런 다음 거기에있는 방법을 사용하여 실제로 원하는 것을 얻습니다 path. 당신이 떨어져 당길 수있는 문자열입니다 :

URI uri = new URI("http://schemas/identity/claims/usertype:External");
String path = uri.getPath();
String newPath = path.replaceAll(":.*", "");
String type = path.replaceAll(".*?:", "");
URI newUri = uri.resolve(newPath);
System.out.println(newUri);
System.out.println(type);

인쇄물:

http://schemas/identity/claims/usertype
External

NB : 거기에 포트 또는 인증 항목을 버리거나 상대 URL로 만드십시오. 원하는대로 수행하십시오.이 코드는 콜론을 계산하려는 시도보다 기본 URL을 변경하는면에서 훨씬 더 강력합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

세미콜론과 더하기로 문자열을 구분하는 정규식 패턴

분류에서Dev

콜론이 뒤 따르지 않는 문자열과 일치하는 정규식 패턴

분류에서Dev

문자열을 분할하는 정규식 패턴

분류에서Dev

특정 문자로 분할하기위한 정규식 패턴을 만드는 방법은 무엇입니까?

분류에서Dev

& amp;를 제외한 세미콜론으로 분할 된 자바 스크립트 정규식

분류에서Dev

특정 단어 패턴 뒤에 발생하지 않는 모든 콜론 문자를 바꿉니다.

분류에서Dev

콜론 ":"뒤의 문자열과 일치하는 정규식

분류에서Dev

가변 길이 콜론으로 구분 된 문자열 정규식 유효성 검사

분류에서Dev

콜론으로 구분 된 전후에 문자열을 가져 오려면 정규식이 필요합니다.

분류에서Dev

식별자를 사용하여 문자열에서 단어를 분할하는 정규식 패턴

분류에서Dev

정규식을 기반으로 문자열을 분할 하시겠습니까? vb.net의 패턴

분류에서Dev

문자열 분할을위한 정규식 패턴을 수정하는 방법

분류에서Dev

정규식 패턴을 사용하여 문자열을 분할하는 방법

분류에서Dev

콜론 앞뒤에 문자열을 가져 오는 정규식

분류에서Dev

검색 구문으로 검색어를 구문 분석하는 정규식 패턴

분류에서Dev

일부 패턴으로 단어를 얻는 정규식

분류에서Dev

CLion 정규식은 찾은 문자열이있는 패턴으로 대체

분류에서Dev

"옵션"이있는 START-END 패턴으로 정규식 찾기 문자열

분류에서Dev

s를 모음 뒤의 마지막 문자로 식별하는 정규식 패턴

분류에서Dev

패턴의 시작과 끝을 확인하는 단일 OR 조건으로 정규식을 디자인하는 방법은 무엇입니까?

분류에서Dev

조건부 awk 문을 사용하여 정규식 패턴 제어

분류에서Dev

문자열에서 반복되는 부분 문자열 패턴을 정규식으로 교체

분류에서Dev

자바 분할 정규식 패턴 문자 및 숫자

분류에서Dev

정규식 패턴-대문자와 숫자 및 하이픈 조합 일치

분류에서Dev

정규식에 콜론을 포함하는 Android Studio TODO 주석 패턴을 일치시키는 방법

분류에서Dev

정규 표현식으로 URL 구문 분석, 패턴이 선택적 문자열과 일치하지 않음

분류에서Dev

단일 정규식 패턴으로 여러 문자열을 대상으로 지정하는 방법

분류에서Dev

"세미콜론 또는 문자열의 끝"을 말하는 정규식 방법

분류에서Dev

":"콜론이 포함 된 관계 이름으로 Semgrex 패턴을 만들 때 발생하는 문제

Related 관련 기사

  1. 1

    세미콜론과 더하기로 문자열을 구분하는 정규식 패턴

  2. 2

    콜론이 뒤 따르지 않는 문자열과 일치하는 정규식 패턴

  3. 3

    문자열을 분할하는 정규식 패턴

  4. 4

    특정 문자로 분할하기위한 정규식 패턴을 만드는 방법은 무엇입니까?

  5. 5

    & amp;를 제외한 세미콜론으로 분할 된 자바 스크립트 정규식

  6. 6

    특정 단어 패턴 뒤에 발생하지 않는 모든 콜론 문자를 바꿉니다.

  7. 7

    콜론 ":"뒤의 문자열과 일치하는 정규식

  8. 8

    가변 길이 콜론으로 구분 된 문자열 정규식 유효성 검사

  9. 9

    콜론으로 구분 된 전후에 문자열을 가져 오려면 정규식이 필요합니다.

  10. 10

    식별자를 사용하여 문자열에서 단어를 분할하는 정규식 패턴

  11. 11

    정규식을 기반으로 문자열을 분할 하시겠습니까? vb.net의 패턴

  12. 12

    문자열 분할을위한 정규식 패턴을 수정하는 방법

  13. 13

    정규식 패턴을 사용하여 문자열을 분할하는 방법

  14. 14

    콜론 앞뒤에 문자열을 가져 오는 정규식

  15. 15

    검색 구문으로 검색어를 구문 분석하는 정규식 패턴

  16. 16

    일부 패턴으로 단어를 얻는 정규식

  17. 17

    CLion 정규식은 찾은 문자열이있는 패턴으로 대체

  18. 18

    "옵션"이있는 START-END 패턴으로 정규식 찾기 문자열

  19. 19

    s를 모음 뒤의 마지막 문자로 식별하는 정규식 패턴

  20. 20

    패턴의 시작과 끝을 확인하는 단일 OR 조건으로 정규식을 디자인하는 방법은 무엇입니까?

  21. 21

    조건부 awk 문을 사용하여 정규식 패턴 제어

  22. 22

    문자열에서 반복되는 부분 문자열 패턴을 정규식으로 교체

  23. 23

    자바 분할 정규식 패턴 문자 및 숫자

  24. 24

    정규식 패턴-대문자와 숫자 및 하이픈 조합 일치

  25. 25

    정규식에 콜론을 포함하는 Android Studio TODO 주석 패턴을 일치시키는 방법

  26. 26

    정규 표현식으로 URL 구문 분석, 패턴이 선택적 문자열과 일치하지 않음

  27. 27

    단일 정규식 패턴으로 여러 문자열을 대상으로 지정하는 방법

  28. 28

    "세미콜론 또는 문자열의 끝"을 말하는 정규식 방법

  29. 29

    ":"콜론이 포함 된 관계 이름으로 Semgrex 패턴을 만들 때 발생하는 문제

뜨겁다태그

보관