정규식 표현 예제

문법과 일치하는 것 외에도 정규식은 두 가지 구문 제한을 충족해야 합니다: 시작 범위 점과 끝 범위 포인트는 정렬 요소 또는 정렬 기호여야 합니다. 범위 식의 시작 또는 끝점으로 사용되는 등가 클래스 식은 지정되지 않은 결과를 생성합니다. 등가 클래스는 대괄호 식 내에서 이식적으로 사용할 수 있지만 범위 밖에만 사용할 수 있습니다. 표현된 데이터 요소 집합이 비어 있으면 식이 일치하지 않거나 유효하지 않은 것으로 처리되는지 여부를 지정할 수 없습니다. Kleene star를 사용하고 공용 구조체를 설정하여 여전히 완전히 표현되는 정규식의 흥미로운 하위 집합을 찾아서 중복성을 제거할 수 있지만 사용이 제한될 수 있습니다. [설명 필요] 이것은 의외로 어려운 문제입니다. 정규식처럼 간단하지만 체계적으로 일부 일반 형식으로 다시 작성하는 방법은 없습니다. 과거에 공리가 부족하여 스타 높이 문제가 발생했습니다. 1991년 덱스터 코젠은 방정식과 호른 절 공리를 사용하여 정규식을 클레인 대수로 표현했습니다. [25] 이미 1964년, 레드코는 순수한 방정식 공리집합이 정규 언어의 대수를 특징짓지 않는다는 것을 증명했다. [26] 정규식은 유닉스 유틸리티 egrep 또는 Perl과 동일한 패턴 언어를 사용하여 문자열 또는 바이트 문자열로 지정됩니다. 문자열 지정 패턴은 문자 regexp 일치문자를 생성하고 바이트 문자열 패턴은 바이트 regexp 일치문자를 생성합니다.

문자 regexp 바이트 문자열 또는 입력 포트와 함께 사용 되는 경우 일치 하는 문자 스트림의 UTF-8 인코딩 (인코딩 및 로 캘리너즈 참조)와 일치 합니다. 바이트 regexp가 문자 문자열과 함께 사용되는 경우 문자열의 UTF-8 인코딩에서 바이트와 일치합니다. 다른 방법은 NFA를 직접 시뮬레이션하여 기본적으로 각 DFA 상태를 필요에 따라 구축한 다음 다음 단계에서 폐기하는 것입니다. 이렇게 하면 DFA가 암시적으로 유지되고 지수 건설 비용을 피할 수 있지만 실행 비용은 O(mn)로 상승합니다. 명시적 접근 방식을 DFA 알고리즘과 NFA 알고리즘의 암시적 접근이라고 합니다. NFA 알고리즘에 캐싱을 추가하는 것은 종종 “지연 DFA” 알고리즘또는 구별없이 DFA 알고리즘이라고 합니다. 이러한 알고리즘은 빠르지만 그룹화된 하위 표현식, 지연 정량화 및 유사한 기능을 회수하는 데 이 알고리즘을 사용하는 것은 까다롭습니다. [34] [35] 프로그래머인 경우, 단일 따옴표와 큰따옴표와 같은 문자가 특수 문자가 아니라는 사실에 놀랄 수 있습니다. 맞습니다.

PowerGREP 또는 EditPad Pro와 같은 텍스트 편집기의 검색 기능과 같은 정규식 또는 grep 도구를 사용하는 경우 프로그래밍 언어에서와 같이 따옴표를 사용하거나 반복해서는 안됩니다. 일치는 문자의 그래픽 표현이 아니라 문자를 인코딩하는 데 사용되는 비트 패턴을 기반으로 합니다. 즉, 문자 집합에 그래픽 기호에 대한 인코딩이 두 개 이상 포함되어 있거나 검색된 문자열에 둘 이상의 코드 집합에 인코딩된 텍스트가 포함되어 있는 경우 인코딩된 기호의 다른 표현을 검색하려고 시도하지 않습니다. 필요한 경우 사용자는 원하는 그래픽 기호의 모든 변형을 포함하는 등가 클래스를 지정할 수 있습니다. 처리기가 제공되면 str이 정규식의 유효한 표현이 아닌 경우 처리기가 호출되고 결과가 반환됩니다.