Loading…

c 정규표현식 예제

정규식은 실제로 ANSI C의 일부가 아닙니다. 그것은 당신이 대부분의 (모두?) * 닉스와 함께 제공되는 POSIX 정규식 라이브러리에 대해 이야기 할 것 같아요. 다음은 C에서 POSIX 정규식을 사용하는 예입니다(이 기준): C로 작성된 작고 이식 가능한 정규식(정규식) 라이브러리입니다. 예를 들어 D는 d로 얻은 것과 관련하여 역일치를 수행합니다. 먼저 몇 가지 예제와 설명을 살펴보겠습니다. 정규식의 서로 다른 기호 집합을 함께 그룹화하여 단일 단위로 작동하고 블록으로 작동할 수 있으므로 괄호()에서 정규식을 래핑해야 합니다. 정규식 라이브러리 자체는 정규식 아래에 문서화되어 있습니다. 정규식의 형식은 re_format으로 설명됩니다. 정규식이 일치하지 않으면 일치 함수는 실패를 나타내기 위해 -1 인덱스를 반환합니다. 괄호는 교대를 그룹화하는 데 사용할 수 있습니다. 더 많은 사용 예제를 보려면 테스트 폴더의 코드를 살펴보는 것이 좋습니다. 예를 들어 는

단순 div

일치를

간단한 div

테스트입니다.

div 태그만 catch하기 위해 우리는 을 사용할 수 있습니다 . 게으른 만들기 위해: man regex.h 는 regex.h에 대한 수동 항목이 없다고 보고하지만 man 3 정규식은 패턴 일치에 대한 POSIX 함수를 설명하는 페이지를 제공합니다. GNU C 라이브러리: 정규 식 일치에 동일한 함수가 설명되어 있는데, 이는 GNU C 라이브러리가 POSIX.2 인터페이스와 GNU C 라이브러리가 수년 동안 가지고 있던 인터페이스를 모두 지원한다는 설명입니다. 정규 표현식이란 무엇이며 그렇게 중요한 것은 무엇입니까? Regex는 숭고한, 메모장 ++, 대괄호, 구글 문서 도구 및 마이크로 소프트 워드와 같은 가장 인기있는 편집자에서 검색 및 교체를 지원하는 URL 일치에 구글 분석에 사용됩니다. 예를 들어 인수로 전달된 문자열 중 첫 번째 인수로 전달된 패턴과 일치하는 문자열을 인쇄하는 가상 프로그램의 경우 다음 과 유사한 코드를 사용할 수 있습니다. 내부 브래킷 표현식 (백슬래시 포함)은 특별한 능력을 잃게되므로 “이스케이프 규칙”을 적용하지 않습니다. 정규식(합리적 표현식이라고도 함)은 주로 문자열과 일치하는 패턴 또는 문자열 일치(예: “찾기 및 바꾸기”와 같은 작업)에 사용하기 위해 검색 패턴을 정의하는 문자 시퀀스입니다. (위키백과) ANSI C. man regex.h에서 정규식을 사용하는 방법에 대한 몇 가지 간단한 예제와 모범 사례를 통해 많은 도움이되지 않습니다. 참고: 반전된 문자 클래스는 버그가 있습니다 – 구체적인 예제에 대한 테스트 하네스를 참조하십시오.

또는 C에서 Perl 호환 정규식에 대한 라이브러리인 PCRE를 체크 아웃할 수도 있습니다. Perl 구문은 Java, Python 및 기타 여러 언어에서 사용되는 구문과 거의 동일합니다. POSIX 구문은 grep, sed, vi 등에서 사용하는 구문입니다. 원하는 것은 아니지만 re2c와 같은 도구는 ANSI C에 POSIX(-ish) 정규 식을 컴파일할 수 있습니다. 그것은 렉스에 대 한 대체로 작성 되었습니다., 하지만이 방법은 유연성과 속도의 마지막 비트에 대 한 가독성을 희생 할 수 있습니다., 정말 필요한 경우. 이 예제 프로그램은 유닉스 정규식 라이브러리를 사용합니다. 컴파일된 프로그램은 두 개의 인수를 취합니다. 첫 번째는 정규표현식입니다. 두 번째는 일치하는 텍스트입니다. 실행하면 더 이상 일치 항목을 찾을 수 없을 때까지 텍스트에 대한 정규 식과 일치합니다.

그런 다음 일치하는 문자열과 최대 9개의 괄호를 사용하는 식을 인쇄합니다. 위의 정규식은 지정된 문자 집합이 전자 메일 주소인지 여부를 확인하는 데 사용할 수 있습니다. 이스케이프 시퀀스 Q는 “quoted 시퀀스”를 시작합니다: 정규식의 끝또는 E가 발견될 때까지 모든 후속 문자는 리터럴로 처리됩니다. 예를 들어 식: Q*+Ea+는 둘 중 하나와 일치합니다: 정규식은 패턴과 문자 시퀀스를 일치시키는 일반화된 방법입니다. 그것은 C ++, 자바 및 파이썬과 같은 모든 프로그래밍 언어로 사용됩니다.