REGEXPER 정규 표현 식 그래 픽 도구 사용

우 리 는 정규 표현 식 을 사용 할 때 번 거 로 운 식 이 항상 머리 가 큰 것 을 보 았 습 니 다. 도형 설명 으로 바 꾸 면 더욱 뚜렷 해 질 수 있 습 니 다.본 고 는 REGEXPER 라 는 사 이 트 를 소개 합 니 다. REGEXPER 사 이 트 는 도 구 를 제공 합 니 다. 정규 표현 식 을 철도 그림 (Railroad Diagram) 으로 바 꿀 수 있 습 니 다. 철도 그림 을 통 해 우리 가 작성 한 정규 표현 식 을 더욱 분명하게 이해 할 수 있 을 것 입 니 다.
위의 이 그림 을 보 세 요. 이것 이 바로 철도 그림 입 니 다.이런 그림 은 우리 가 정규 안에 있 는 각종 복잡 한 끼 워 넣 기 순환, 선택 할 수 있 는 요 소 를 직면 할 때 더욱 직관 적 인 방식 을 제공 할 수 있다.이 그림 의 가장 간단 한 견 해 는 선 을 따라 왼쪽 에서 뒤 를 보 는 것 이다.만약 당신 이 분기 branch 를 만 났 다 면, 여 기 는 여러 가지 선택 이 있 음 을 표시 합 니 다. 당신 은 하나의 경로 중 하 나 를 선택 하여 아래 를 내 려 다 볼 수 있 습 니 다. (어떤 경 로 는 어느 순간 에 다시 앞으로 돌아 올 수 있 습 니 다. 예 를 들 어 순환 할 때)전체 그림 의 표현 식 과 완전 하 게 일치 하기 위해 서 는 왼쪽 에서 오른쪽으로 전체 그림 을 끝까지 걸 어야 합 니 다.
예 를 들 어 위의 이 그림 에서 그의 정규 표현 식 은 Lions(?: and|,) tigers,? and bears\. Oh my! 이다.이 표현 식 은 "Lions and tigers and bears. Oh my!" 또는 "Lions, tigers, and bears. Oh my!" 와 일치 합 니 다. 즉, 옥 스 퍼 드 쉼표 대신 and 를 사용 하거나 옥 스 퍼 드 쉼표 를 사용 하지 않 습 니 다 and.이 그림 은 먼저 "Lions" 문자열 이 있어 야 한 다 는 것 을 설명 합 니 다. 이것 은 없어 서 는 안 될 것 입 니 다.다음은 'and' 와 ',' 사이 에서 하 나 를 선택 할 수 있 습 니 다.네가 방금 어떤 선택 을 하 든 그 다음 에는 반드시 'tigers' 가 따라 가 야 한다.이 'tigers' 뒤에 쉼표 가 있 을 수도 있 고 경로 에서 이 쉼표 를 돌아 갈 수도 있 기 때문에 뒤에 있 는 이 쉼표 는 선택 할 수 있 습 니 다.마지막 으로 고정된 문자열 을 따라 가 야 합 니 다. "and bears. Oh my!"
다음은 우리 가 철도 도 중의 일부 원소 의 의 미 를 소개 한다.
기본 요소
이 그림 에서 가장 이해 하기 쉬 운 부분 은 선택 경로 와 같은 문자 나 텍스트 문자열, 전의 문자, 임 의 문자 가 없다 는 것 이다.
일반 문자 크기
글자 의 양은 정확 한 텍스트 문자열 과 일치 합 니 다.그들 은 블록 에 전시 되 어 있 으 며, 내용 은 으로 감 싸 준다.예 를 들 어 /a/ 또는 /\d+ / 중의 이런 정규 중의 직접 글자 크기 는 REGEXPER 사이트 에서 로 감 싸 서 표시 한다.
정상 문자 의 전의 시퀀스
전의 서열 은 그림 에 상자 로 감 싸 고 일치 하 는 문자 에 대한 설명 을 포함 합 니 다.그 중 일부 전의 문 자 는 그 가 너 에 게 16 로 바 꿔 줄 것 이 며, 심지 어 는 특수 한 영어 이름 을 더 해서 너 로 하여 금 더욱 분명하게 볼 수 있 게 할 것 이다.
정상 적 인 전 의 를 제외 하고 다음 몇 가지 도 전의 에서 사용 하 는 색 블록 유형 과 같다.
  • 문자 의 진법 표시 법
  • 이 는 위의 전의 서열 과 마찬가지 로 모두 조각 으로 싸 여 있다.다만 일반적으로 당신 의 진 을 직접 표시 합 니 다.
  • 미리 정 의 된 정규 문자
  • 메타 문 자 는 사실 과 같 기 때문에 그 는 정상 적 인 문자열 에 구체 적 인 전의 의 미 를 가지 지 않 지만 정규 표현 식 에 서 는 일부 문 자 를 표현 할 수 있다.그래서 그 도 전문 의 일종 이 라 고 할 수 있다.그래서 로 감 쌌 다.또한 REGEXPER 이 문자 에 영어 이름 의 설명 을 추가 합 니 다. 예 를 들 어 \d 글 을 쓸 줄 압 니 다 digit .
    이 를 통 해 알 수 있 듯 이 , 그들 은 모두 하나의 표현 형식 이기 때문에 REEXPER 사이트 에서 모두 녹색 블록 으로 감 싸 서 표시 한다.
    임 의 문자
    정규 그림 예: 즉 임의의 문 자 는 정규 표현 식 의 포인트 입 니 다.
    정규 에 서 는 /./ 번호 로 임 의 문 자 를 표시 하고 . REGEXPER 사이트 에 서 는 검은색 블록 으로 감 싸 고 . 로 표시 된다.그 는 임의의 문자 와 일치한다.
    행수 와 행미Any Character^ 이 두 문 자 는 줄 의 첫 줄 끝 을 대표 하고 특수 하 며 $ 로 감 싸 줍 니 다.
    문자 집합
    그림: 문자 집합 은 여러 문자 의 집합 을 말 합 니 다. 문자 집합 은 한 무더기 의 문자 와 일치 하지 않 거나 일치 하지 않 습 니 다.문자 집합 은 그림 에서 [#a-z
    ][^$0-9\b]
    로 나타난다.블록의 맨 위 에 "포함" 인지 "포함 하지 않 음" 인지 label 태그 로 표시 합 니 다.
    정규 에 서 는 일반적으로 literal 또는 [a-z] 이런 표기 법 을 가리킨다.예 를 들 어 [a - z] 는 어 릴 때 부터 a 부터 소문 자 z 까지 26 글자 의 집합 을 나 타 냈 다.REGEXPER 사이트 에 서 는 문자 집 회 를 회색 조각 으로 여러 개 [^a-z] 를 감 쌌 다.의미: 여러 개의 단일 문자 기호 집합.
    회색 조각의 꼭대기 에 영어 힌트 가 있 습 니 다. 이 회색 조각 이 'One Of' 인지 'None of' 인지 알려 드릴 게 요.[a - z] 와 같은 것 은 이 고 집합 에 a 에서 z 가 포함 되 어 있 음 을 나타 낸다.1 은 OneOf, 즉 집합 에 a 에서 z 가 포함 되 지 않 음 을 나타 낸다.
    하위 표현 식
    그림: NoneOf하위 표현 식 은 표현 식 주위 의 점선 윤곽 으로 표 시 됩 니 다.하위 캡 처 그룹 은 상자 의 맨 위 에 그룹 번 호 를 label 로 표시 합 니 다.(example\s)(?=content) 이런 포획 팀 도 모두 이렇게 표시 되 어 있다.
    교대
    그림: 교 체 는 하나의 선택 을 제공 합 니 다. 그 는 그림 에서 정규 표현 식 의 다양한 선택 을 여러 경로 로 표현 합 니 다.
    양사
    양 어 는 표현 식 이 중복 되 어야 하 는 지 선택 할 수 있 는 지 를 나 타 냈 다.그들 은 그림 의 분기 경로 와 돌아 올 수 있 는 경 로 를 통 해 당신 의 선택 방식 을 표현 하 는 것 처럼 보 입 니 다.
    여기 약속 이 있 습 니 다. 경로 에 화살표 로 명확 하 게 표시 하지 않 으 면 돌아 가 는 것 이 아니 라 먼저 직진 해 야 합 니 다.
    0 개 이상
    그림: ?: ?= ?<=one\s|two\W|three\t|four
    (?:greedy)* 양 어 는 임의의 횟수 를 반복 하 는 greedy 모드 를 말 합 니 다. 기본적으로 화살표 가 없 는 상태 에서 직진 하기 때문에 왼쪽 그림 에서 볼 수 있 습 니 다. 먼저 실행 하면 greedy 가 여러 번 순환 할 수 있 기 때문에 이 정규 표현 식 을 실행 할 때 n 번 의 greedy 문자열 과 최대한 일치 합 니 다.
    여러분, 그림 오른쪽 에 있 는 이거 (?:non-greedy)*? 조심 하 세 요.우 리 는 그의 그림 에서 상반부 의 이 경로 에 미리 화살 표를 그 렸 는데, 하반부 의 이 경로 화살 표 는 없어졌다.이것 은 당신 이 먼저 위의 경 로 를 걷 게 하 는 것 과 같 습 니 다. 아래 는 원래 의 길이 통 하지 않 기 때문에 일치 하 는 결 과 는 non-greedy quantifier 입 니 다.우 리 는 정규 표현 식 자체 를 보 았 다. 그 는 사실 non-greedy 을 바탕 으로 이른바 (non-greedy)*? 을 추가 했다. 즉, 앞의 이것 (non-greedy)* 에 게 게 게 으 름 모드 를 사용 하여 가능 한 한 반복 을 적 게 하 라 고 말 했다.
    따라서 이 정규 가 'non - greedynon - greedynon - greedynon - greedy' 와 일치한다 면 그 는 결 과 를 빈 문자열 로 되 돌려 줍 니 다.
    필수 (1 개 이상)
    그림: *필수 양 어 는 하나 이상 일치 해 야 한 다 는 것 이다.주의: 위 (?:greedy)+ 처럼 그림 에서 직접 뛰 어 넘 을 수 없습니다.그래서 우리 가 그림 에서 볼 때 오른쪽으로 갈 수 있 는 길 은 중간 길 만 남 았 다.아래 의 이 길 은 사실 네가 보기에 그것 은 왼쪽 기점 에서 출발 하 는 것 이 아니 라 오른쪽 에서 돌아 가 는 길이 다. 그러나 화살표 가 없 기 때문에 너 도 돌아 갈 수 없다.
    따라서 최종 결 과 는 오른쪽 그림 이 한 번 만 일치 할 수 있다 는 것 이다 (?:greedy)+?.사실은 정규 표현 식 자 체 를 보면 0 이라는 양 어 를 게 으 름 모드 로 일치 시 키 는 것 이다.
    선택 가능
    그림: non-greedy+선택 할 수 있 는 것 은 이 패턴 과 가장 많이 일치 하 는 것 을 말한다.그 가 자신 에 게 돌아 갈 길이 없다 는 것 을 알 수 있다.
    범위 구간
    그림: (?:greedy)?(?:non-greedy)??구간 은 패턴 을 일정 수량의 횟수 로 반복 하 는 것 을 말한다.이 두 가지 예 는 모두 하나의 (5, 10) 번 의 구간 을 제공 합 니 다. 그림 의 times label 라벨 은 이 분기 가 순환 할 횟수 (그림 의 4 - 9 번 참조) 를 적 었 습 니 다.이 그림 의 차 수 치 는 정규 표현 식 에서 쓴 횟수 보다 한 번 적 습 니 다. 이 모드 는 적어도 순환 하기 전에 경로 에서 한 번 일치 하기 때 문 입 니 다.따라서 이 모델 은 정상 적 인 경로 에서 한 번 일치 한 다음 에 순환 에 들 어가 4 - 9 번 일치 하고 모두 5 - 10 번 입 니 다.
    여러분 오른쪽 그림 을 보 세 요. 사실은 (?:greedy){5,10} 의 게 으 름 모드 입 니 다.그 는 가능 한 한 적은 횟수 와 일치 하기 때문에 그림 에 화살 표를 그리 지 않 았 다. 라벨 에 4 - 9 번 을 썼 다 는 뜻 이다. 너 는 가능 한 한 적 게 돌아 와 요 구 를 만족 시 키 기만 하면 (예 를 들 어 4 번 을 돌 리 는 것) 계속 뒤로 가라.
    총결산
  • 연한 파란색 블록: 글자 의 양
  • 녹색 블록: 전의 서열
  • 회색 블록: 임의의 문자, 줄 의 맨 끝
  • 점선 상자: 하위 포획 조
  • 실제 라인: 논리 적 으로 일치 하 는 전진 경로
  • 글 은 나의 블 로그 에 동시에 발표 되 었 다.https://blog.cuiyongjian.com/...
    a-z ↩

    좋은 웹페이지 즐겨찾기