정규 표현식 - 예


간단한 표현식

정규 표현식의 가장 간단한 형태는 검색 문자열에서 단일 일반 문자 자체와 일치합니다. 예를 들어, A와 같은 단일 문자 패턴은 검색 문자열의 어디에 나타나든 항상 문자 A와 일치합니다. 다음은 단일 문자 정규 표현식 패턴의 몇 가지 예입니다.

/a/
/7/
/M/

많은 단일 문자를 결합하여 큰 표현식을 형성할 수 있습니다. 예를 들어, 다음 정규식은 단일 문자 표현식인 a, 7 및 M을 결합합니다.

/a7M/

연결 연산자가 없다는 점에 유의하세요. 한 문자씩 차례로 입력하면 됩니다.

문자 일치

마침표(.)는 한 가지 예외를 제외하고 문자열의 모든 인쇄 또는 비인쇄 문자와 일치합니다. 개행 문자(n)는 예외입니다. 다음 정규 표현식은 aac, abc, acc, adc 등은 물론 a1c, a2c, a-c 및 a#c와도 일치합니다.

/a.c/

파일 이름이 포함된 문자열과 일치하려면 마침표(.)가 입력 문자열입니다. 구성 요소의 정규식에서 마침표 앞에 백슬래시() 문자를 추가하세요. 설명을 위해 다음 정규 표현식은 filename.ext와 일치합니다.

/filename\.ext/

이 표현식을 사용하면 "모든" 단일 문자만 일치시킬 수 있습니다. 목록의 특정 문자 그룹을 일치시켜야 할 수도 있습니다. 예를 들어, 숫자로 된 장 제목(1장, 2장 등)을 찾고 싶을 수 있습니다.

대괄호 표현식

일치하는 문자 그룹 목록을 만들려면 하나 이상의 단일 문자를 대괄호([ 및 ]) 안에 넣으세요. 문자가 대괄호로 묶인 경우 목록을 "대괄호 표현식"이라고 합니다. 일반 문자는 다른 위치에서와 마찬가지로 대괄호 안에 표시됩니다. 즉, 입력 텍스트에서 한 번만 일치합니다. 대부분의 특수 문자는 대괄호 표현식 안에 나타나면 의미를 잃습니다. 다음과 같은 몇 가지 예외가 있습니다.

  • ] 문자가 첫 번째 항목이 아닌 경우 목록이 종료됩니다. 목록에서 ] 문자를 일치시키려면 여는 [ 바로 뒤에 먼저 배치하십시오.

  • 캐릭터는 계속해서 탈출 캐릭터 역할을 합니다. 문자를 일치시키려면 \를 사용하십시오.

대괄호 표현식으로 묶인 문자는 정규 표현식의 해당 위치에 있는 단일 문자와만 일치합니다. 다음 정규 표현식은 Chapter 1, Chapter 2, Chapter 3, Chapter 4 및 Chapter 5와 일치합니다.

/Chapter [12345]/

Chapter라는 단어의 위치와 다음 공백은 대괄호 안의 문자를 기준으로 고정됩니다. 대괄호 표현식은 Chapter라는 단어와 공백 바로 뒤에 있는 단일 문자 위치와만 일치하는 문자 세트를 지정합니다. 아홉 번째 캐릭터 위치입니다.

문자 자체 대신 범위를 사용하여 일치하는 문자 그룹을 나타내려면 하이픈(-)을 사용하여 범위에서 시작 문자와 끝 문자를 구분하세요. 단일 문자의 문자 값은 범위 내의 상대적 순서를 결정합니다. 다음 정규식에는 위에 표시된 대괄호로 묶인 목록과 동일한 범위 식이 포함되어 있습니다.

/Chapter [1-5]/

이렇게 범위를 지정하면 시작값과 끝값이 모두 범위에 포함됩니다. 유니코드 정렬 순서에서 시작 값은 끝 값보다 앞에 와야 한다는 점도 중요합니다.

대괄호 표현식에 하이픈을 포함하려면 다음 방법 중 하나를 사용하세요.

  • 백슬래시로 이스케이프 처리하세요.

    [\-]
  • 대괄호 목록의 시작 부분이나 끝 부분에 하이픈을 넣으세요. 다음 표현식은 모든 소문자 및 하이픈과 일치합니다.

    [-a-z]
    [a-z-]
  • 시작 문자 값이 하이픈보다 작고 끝 문자 값이 하이픈보다 크거나 같은 범위를 만듭니다. 다음 두 정규식은 이 요구 사항을 충족합니다.

    [!--]
    [!-~]

목록이나 범위에 없는 모든 문자를 찾으려면 목록 시작 부분에 캐럿(^)을 배치하세요. 캐럿이 목록의 다른 곳에 나타나면 자체적으로 일치하는 것입니다. 다음 정규 표현식은 1, 2, 3, 4 또는 5가 아닌 모든 숫자 및 문자와 일치합니다.

/Chapter [^12345]/

위 예에서 표현식은 9번째 위치에 있는 1, 2, 3, 4 또는 5 사이의 모든 숫자와 일치합니다. 이외의 문자. 즉, 예를 들어 7장이 일치하고 9장이 일치하는 경우입니다.

위 표현식은 하이픈(-)을 사용하여 나타낼 수 있습니다.

/Chapter [^1-5]/

대괄호 표현식의 일반적인 사용은 대문자나 소문자 또는 숫자의 일치를 지정하는 것입니다. 다음 표현식은 이러한 일치를 지정합니다.

/[A-Za-z0-9]/

Replacement and Grouping

Replacement는 | 문자를 사용하여 두 개 이상의 대체 옵션 중에서 선택할 수 있습니다. 예를 들어, 장 제목 정규식을 확장하여 장 제목보다 더 넓은 범위의 일치 항목을 반환할 수 있습니다. 그러나 생각만큼 간단하지 않습니다. 대체는 | 문자 양쪽의 가장 큰 표현식과 일치합니다.

다음 표현식은 줄의 시작과 끝 부분에 표시되고 그 뒤에 하나 또는 두 개의 숫자가 나타나는 Chapter 또는 섹션과 일치한다고 생각할 수 있습니다.

/^Chapter|Section [1-9][0-9]{0,1}$/

안타깝게도 위 정규 표현식은 줄 시작 부분에 있는 Chapter 단어와 일치합니다. 행,either은 행 끝의 섹션이라는 단어와 그 뒤에 숫자가 오는 것과 일치합니다. 입력 문자열이 Chapter 22인 경우 위 표현식은 Chapter라는 단어만 일치합니다. 입력 문자열이 섹션 22인 경우 이 표현식은 섹션 22와 일치합니다.

정규식을 더 쉽게 제어하려면 괄호를 사용하여 대체 범위를 제한할 수 있습니다. 즉, Chapter와 Section 두 단어에만 적용되도록 해야 합니다. 그러나 역참조 섹션에서 설명한 대로 괄호는 하위 표현식을 생성하고 나중에 사용하기 위해 캡처하는 데에도 사용됩니다. 위 정규 표현식의 적절한 위치에 괄호를 추가하여 정규 표현식이 Chapter 1 또는 Section 3과 일치하도록 만들 수 있습니다.

다음 정규식은 괄호를 사용하여 Chapter와 Section을 결합하여 식이 올바르게 작동하도록 합니다.

/^(Chapter|Section) [1-9][0-9]{0,1}$/

이러한 표현식은 올바르게 작동하지만 Chapter|Section 주위의 괄호는 나중에 사용할 수 있도록 일치하는 두 단어 중 하나도 캡처합니다. 위 표현식에는 괄호 세트가 하나만 있으므로 캡처되는 "부분 일치"는 하나만 있습니다.

위의 예에서는 장과 섹션이라는 단어를 결합하기 위해 괄호를 사용하기만 하면 됩니다. 나중에 사용할 수 있도록 일치 항목이 저장되지 않도록 하려면 대괄호로 묶인 정규식 패턴 앞에 ?:를 배치하세요. 다음 수정 사항은 부분 일치를 저장하지 않고 동일한 기능을 제공합니다.

/^(?:Chapter|Section) [1-9][0-9]{0,1}$/

?: 메타 문자 외에도 두 개의 다른 비캡처 메타 문자가 "예측" 일치라는 항목을 만듭니다. 정방향 예측은 ?= 를 사용하여 지정됩니다. 이는 괄호로 묶인 일치 정규식 패턴의 시작 부분에 있는 검색 문자열과 일치합니다. 역방향 예측은 정규식 패턴과 일치하지 않는 문자열의 시작 부분에 있는 검색 문자열과 일치하는 ?!를 사용하여 지정됩니다.

예를 들어 Windows 3.1, Windows 95, Windows 98 및 Windows NT에 대한 참조가 포함된 문서가 있다고 가정합니다. 또한 Windows 95, Windows 98 및 Windows NT에 대한 모든 참조를 Windows 2000으로 변경하기 위해 문서를 업데이트해야 한다고 가정해 보겠습니다. 다음 정규식(예측 예)은 Windows 95, Windows 98 및 Windows NT와 일치합니다.

/Windows(?=95 |98 |NT )/

일치 항목이 발견된 후 일치하는 텍스트(예측 제외)의 문자는 )이고 다음을 검색합니다. 다음 경기. 예를 들어 위의 표현식이 Windows 98과 일치하는 경우 98 이후가 아닌 Windows 이후에서 검색이 계속됩니다.

기타 예

아래에는 정규식 예가 나와 있습니다.

正则表达式描述
/b([a-z]+) 1b/gi一个单词连续出现的位置。
/(w+)://([^/:]+)(:d*)?([^# ]*)/将一个URL解析为协议、域、端口及相对路径。
/^(?:Chapter|Section) [1-9][0-9]{0,1}$/定位章节的位置。
/[-a-z]/A至z共26个字母再加一个-号。
/terb/可匹配chapter,而不能匹配terminal。
/Bapt/可匹配chapter,而不能匹配aptitude。
/Windows(?=95 |98 |NT )/可匹配Windows95或Windows98或WindowsNT,当找到一个匹配后,从Windows后面开始进行下一次的检索匹配。
/^s*$/匹配空行。
/d{2}-d{5}/验证由两位数字、一个连字符再加 5 位数字组成的 ID 号。
/<s*(S+)(s[^>]*)?>[sS]*<s*/1s*>/匹配 HTML 标记。