'|'문자 허용을 선택하여 두 명 이상의 후보 중에서 선택하십시오. 장 제목의 정규 표현식을 확장함으로써, 제목에 단순히 적용되는 표현식으로 확장 될 수 있습니다. 그러나 이것은 예상만큼 직접적인 것이 아닙니다. 선택을 사용하면 '|'의 각 측면에 대한 표현이 일치합니다. 다음 JScript 및 vbscript 표현식은 행의 시작 및 끝 위치에서 '챕터'또는 '섹션'과 일치하고 한두 개의 숫자가 다음과 같이 생각할 수 있습니다.
/^Chapter|Section [1-9][0-9]{0,1}$/ ^Chapter|Section [1-9][0-9]{0,1}___FCKpd___0quot;불행히도, 실제 사례는 위에 표시된 정규 표현이 줄의 시작 부분에서 '챕터'라는 단어와 일치하거나 줄 끝에서 '섹션'과 일치하는 다음 숫자와 일치한다는 것입니다. 입력 문자열이 '22 장'인 경우 위의 표현식은 '챕터'라는 단어와 일치합니다. 입력 문자열이 '섹션 22'인 경우 표현식은 '섹션 22'와 일치합니다. 그러나이 결과는 여기서 우리의 목적이 아니므로 정기적 인 표현을 그들이 할 일에보다 반응 할 수있는 방법이 있어야하며 실제로 그러한 방법이 있습니다.
괄호는 선택의 범위를 제한하는 데 사용될 수 있습니다. 즉, 선택은 두 단어 '챕터'와 '섹션'에만 적용된다는 것이 분명합니다. 그러나 괄호는 또한 하위 표현을 생성하는 데 사용되기 때문에 다루기가 어렵고 일부는 하위 표현 섹션에 나중에 도입 될 것입니다. 위에 표시된 정규 표현을 취하고 적절한 위치에 괄호를 추가함으로써 정기적 인 표현은 '1 장'과 '섹션 3'과 일치하도록 할 수 있습니다.
다음의 정규 표현식은 괄호를 사용하여 '챕터'및 '섹션'을 그룹화하여 표현식이 올바르게 작동하도록합니다. jscript :
/^(Chapter|Section) [1-9][0-9]{0,1}$/vbscript :
^(Chapter|Section) [1-9][0-9]{0,1}___FCKpd___2quot;이러한 표현은 올바르게 작동하며 흥미로운 부산물 만 생성합니다. '챕터 | 섹션'의 양쪽에 괄호를 배치하면 적절한 그룹화가 생성되지만 향후 사용을 위해 두 단어 중 하나가 캡처되도록합니다. 위에 표시된 표현에는 하나의 괄호가 하나만 있기 때문에 캡처 된 서브 매치 만있을 수 있습니다. 이 잠수함은 vbscript의 서브 매치 컬렉션 또는 jscript의 regexp 객체의 $ 1- $ 9 속성을 사용하여 참조 할 수 있습니다.
때로는 서브 경기를 캡처하는 것이 바람직하고 때로는 바람직하지 않습니다. 설명에 표시된 예에서, 당신이 실제로하고 싶은 것은 괄호를 사용하여 '챕터'또는 '섹션'이라는 단어 사이의 선택을 그룹화하는 것입니다. 나중에 경기를 참조하는 것은 바람직하지 않습니다. 실제로 서브 매치를 캡처 해야하는 한 사용하지 마십시오. 이 정규식은 해당 하위 경기를 저장하는 데 시간과 기억이 필요하지 않기 때문에 더 효율적입니다.
당신은 '? :'정규 표현 패턴 앞에서 괄호 안에서 사용할 수 있습니다. 위에 표시된 정규 표현식에 대한 다음 수정은 서브 매치 스토리지를 제거하는 동일한 기능을 제공합니다. jscript :
/^(?:Chapter|Section) [1-9][0-9]{0,1}$/vbscript :
^(?:Chapter|Section) [1-9][0-9]{0,1}___FCKpd___4quot;'? :'Metacharacter 외에도 프리-체크 라고 불리는 일치하는 데 사용되는 두 개의 비과 캡처 메타 카라 터가 있습니다. 전방 사전 점검은 괄호 안의 정규 표현 패턴이 검색 문자열과 일치하기 시작하는? = =에 의해 표시됩니다. 부정적인 사전 체크는 '?!'로 표시됩니다.
예를 들어 Windows 3.1, Windows 95, Windows 98 및 Windows NT에 대한 참조가 포함 된 문서가 있다고 가정합니다. 또한 Windows 95, Windows 98 및 Windows NT에 대한 모든 참조를 찾고 Windows 2000에 대한 참조를 변경하여 문서를 업데이트해야한다고 가정합니다. Windows 95, Windows 98 및 Wind
/Windows(?=95 |98 |NT )/ vbscript에서 동일한 일치를 만들려면 다음 표현식을 사용할 수 있습니다. Windows(?=95 |98 |NT )
일치가 발견되면, 다음 경기 검색은 일치하는 텍스트 (예비 예방 조치에 사용 된 문자가 포함되지 않음)에 따라 시작됩니다. 예를 들어, 위에 표시된 표현이 'Windows 98'과 일치하면 검색은 '98'대신 'Windows'에서 계속됩니다.
정규 표현식의 가장 중요한 기능 중 하나는 나중에 사용하기 위해 일치하는 성공적인 패턴의 일부를 저장하는 능력입니다. 정규 표현 패턴 또는 부분 패턴의 양쪽에 괄호를 추가하면 부분 표현이 임시 버퍼에 저장 될 수 있습니다. 캡처하는 metacharacters '? :', '? ='또는 '?!'
캡처 된 각 변수는 정규 표현 패턴에서 왼쪽에서 오른쪽으로 발생하는 내용으로 저장됩니다. 서브 경기를 저장하는 버퍼 번호는 1에서 시작하여 최대 99 개의 하위 표현까지 연속적으로 번호가 매겨집니다. 각 버퍼는 '/ n '을 사용하여 액세스 할 수 있으며, 여기서 N은 특정 버퍼를 식별하는 1-2 자리 소수점 숫자입니다.
뒤로 인용 가장 쉽고 유용한 응용 프로그램 중 하나는 텍스트에서 두 개의 동일한 단어가 연속적으로 나타나는 위치를 결정하는 능력입니다. 다음 문장을 참조하십시오.
Is is the cost of of gasoline going up up?서면 내용에 따르면, 위의 문장은 분명히 반복적으로 반복되는 단어의 문제가 있습니다. 각 단어의 반복을 찾지 않고 문장을 수정하는 방법이 있다면 좋을 것입니다. 다음 JScript 정규식은 서브 표현을 사용 하여이 함수를 달성 할 수 있습니다.
//b([az]+) /1/b/gi동등한 vbscript 표현식은 다음과 같습니다.
/b([az]+) /1/b이 예에서, 하위 표현은 괄호 사이의 각 항목입니다. 캡처 된 표현은 하나 이상의 알파벳 문자, 즉 '[az]+'로 지정된 하나 이상의 알파벳 문자를 포함합니다. 정규 표현의 두 번째 부분은 이전에 캡처 된 서브 매치, 즉 추가 표현과 일치하는 단어의 두 번째 발생에 대한 참조입니다. '/1'은 첫 번째 할머니를 지정하는 데 사용됩니다. Word 경계 표본 문자는 개별 단어 만 감지되도록합니다. 그렇지 않은 경우 발행되거나 이와 같은 문구는 표현식에 의해 잘못 인식됩니다.
jscript 표현식에서, 정규 표현식에 따른 글로벌 플래그 ( 'g')는 표현식이 입력 문자열에서 가능한 많은 일치를 찾는 데 사용될 것임을 의미합니다. 사례 민감도는 표현식 끝에서 사례 감도 마크 ( 'i')에 의해 지정됩니다. 멀티 라인 태그는 Newline 캐릭터의 양쪽 끝에 나타날 수있는 잠재적 일치를 지정합니다. vbscript의 경우 다양한 태그를 표현식으로 설정할 수는 없지만 Regexp 객체의 속성을 사용하여 명시 적으로 설정해야합니다.
위에 표시된 정규 표현식을 사용하면 다음 JScript 코드는 문자 그대로 문자열에 두 번 표시되는 동일한 단어를 하위 매칭 정보를 사용하여 동일한 단어로 대체 할 수 있습니다.
var ss = Is is the cost of of gasoline going up up?./n; var re = //b([az]+) /1/b/gim; //. var rv = ss.replace(re,$1); //두 단어를 한 단어로 바꿉니다.
가장 가까운 VBScript 코드는 다음과 같습니다.
Dim ss, re, rv ss = Is is the cost of of gasoline going up up?. & vbNewLine Set re = New RegExp re.Pattern = /b([az]+) /1/b re.Global = True re.IgnoreCase = True re.MultiLine = True rv = re.Replace(ss,$1)vbscript 코드에서 글로벌, 사례 감도 및 다중선 태그는 regexp 객체의 적절한 속성을 사용하여 설정됩니다.
저장된 첫 번째 서브 매치를 참조하기 위해 교체 방법에서 $ 1을 사용하십시오. 서브 매치가 여러 개있는 경우 $ 2 , $ 3 등으로 계속 참조 할 수 있습니다.
후진 참조의 또 다른 사용은 공통 리소스 표시기 (URI)를 구성 요소 부품으로 나누는 것입니다. 다음 URI를 프로토콜 (FTP, HTTP 등), 도메인 이름 주소 및 페이지/경로로 분해한다고 가정 해 봅시다.
http://msdn.microsoft.com:80/scripting/default.htm다음과 같은 정규 표현식은이 기능을 제공 할 수 있습니다. jscript의 경우 :
/(/w+):////([^/:]+)(:/d*)?([^# ]*)/vbscript :
(/w+):////([^/:]+)(:/d*)?([^# ]*)첫 번째 추가 하위 표현은 웹 주소의 프로토콜 부분을 캡처하는 데 사용됩니다. 이 하위 표현은 결장 이전에 위치한 모든 단어와 두 개의 전방 슬래시와 일치합니다. 두 번째 추가 하위 표현은 해당 주소의 도메인 이름 주소를 캡처합니다. 이 하위 표현은 '^', '/'또는 ':'문자를 포함하지 않는 모든 문자 순서와 일치합니다. 세 번째 추가 하위 표현은 포트 번호가 지정된 경우 웹 사이트 포트 번호를 캡처합니다. 이 하위 발현은 0 이상의 숫자와 결장이 뒤 따릅니다. 마지막으로, 네 번째 추가 하위 표현은 웹 주소 및/또는 페이지 정보로 지정된 경로를 캡처합니다. 이 하위 표현은 '#'또는 공간을 제외한 하나 및 여러 문자와 일치합니다.
이 정규식을 상기에 표시된 URI에 적용한 후 하위 매치에는 다음이 포함됩니다.
Regexp. $ 1 에는 HTTP가 포함됩니다
Regexp. $ 2 에는 msdn.microsoft.com이 포함됩니다
Regexp. $ 3는 다음과 같습니다. 80
regexp. $ 4 에는 /scripting/default.htm이 포함되어 있습니다