C++에서 정규식을 사용하여 텍스트 구문 분석
정규식은 텍스트 패턴을 일치시키고 검색하기 위한 강력하고 유연한 도구입니다. C++에서는 정규식 라이브러리를 사용하여 텍스트를 구문 분석할 수 있습니다.
C++의 정규식 라이브러리에는 std::regex와 Boost.Regex라는 두 가지 주요 선택 사항이 있습니다. 두 라이브러리 모두 유사한 인터페이스와 기능을 제공합니다. 그러나 다르게 구현되기 때문에 경우에 따라 성능 차이가 발생할 수 있습니다. Boost.Regex는 일반적으로 더 빠르고 정확한 옵션으로 간주되지만 Boost 라이브러리를 사용해야 합니다.
이 글에서는 std::regex 라이브러리를 사용하여 C++에서 텍스트를 구문 분석하는 방법을 소개합니다. 다양한 정규식 구문을 사용하여 텍스트를 일치시키고 추출하는 방법을 몇 가지 예를 통해 보여 드리겠습니다.
예제 1: 기본 텍스트 일치
이 예에서는 "hello"가 포함된 문자열을 일치시킵니다.
#include <iostream> #include <regex> int main() { std::string text = "hello world!"; std::regex pattern("hello"); if (std::regex_search(text, pattern)) { std::cout << "Match found!" << std::endl; } else { std::cout << "Match not found." << std::endl; } return 0; }
이 간단한 프로그램은 std::regex_search() 함수를 사용하여 "hello" 문자열이 텍스트에 존재하는지 검색합니다. 일치하는 항목이 발견되면 프로그램은 "일치하는 항목을 찾았습니다."를 출력하고, 그렇지 않으면 "일치하는 항목을 찾을 수 없습니다."를 출력합니다. std::string 및 std::regex 클래스를 사용하고 정규식을 문자열로 regex 개체에 전달했습니다.
예 2: 메타 문자 사용
정규 표현식의 메타 문자는 특별한 의미를 지닌 문자를 나타냅니다. 다음은 가장 일반적으로 사용되는 메타 문자와 그 의미입니다.
아래 예에서는 "hello"로 시작하는 모든 문자열을 일치시킵니다.
#include <iostream> #include <regex> int main() { std::string text1 = "hello world!"; std::string text2 = "world hello!"; std::regex pattern("^hello"); if (std::regex_search(text1, pattern)) { std::cout << "Match found in text1!" << std::endl; } if (std::regex_search(text2, pattern)) { std::cout << "Match found in text2!" << std::endl; } return 0; }
이 예에서는 메타 문자 "^"를 사용하여 "hello"로 시작하는 문자열을 일치시킵니다. 첫 번째 텍스트 "hello world!"에서 정규식과 문자열은 모두 "hello"로 시작하므로 프로그램은 "Matchfound in text1!"을 출력합니다. 두 번째 텍스트 "world hello!"에서 정규식은 문자열의 시작 부분과 일치하지 않으므로 프로그램은 아무것도 인쇄하지 않습니다.
예 3: 수량자 사용
정규 표현식의 수량자는 패턴 일치 수를 지정합니다. 다음은 가장 일반적으로 사용되는 수량사와 그 의미 중 일부입니다.
아래 예에서는 수량자 "+"를 사용하여 하나 이상의 숫자와 일치시킵니다.
#include <iostream> #include <regex> int main() { std::string text1 = "1234"; std::string text2 = "a1234"; std::regex pattern("\d+"); if (std::regex_search(text1, pattern)) { std::cout << "Match found in text1!" << std::endl; } if (std::regex_search(text2, pattern)) { std::cout << "Match found in text2!" << std::endl; } return 0; }
이 예에서는 정규식 "d+"를 사용하여 하나 이상의 숫자를 일치시킵니다. 첫 번째 텍스트 "1234"에서 정규식은 전체 문자열과 일치하므로 프로그램은 "텍스트1에서 일치 항목을 찾았습니다!"를 출력합니다. 두 번째 텍스트 "a1234"에서 정규식은 숫자 하위 문자열 "1234"에만 일치하므로 프로그램은 "Matchfound in text2!"를 출력합니다.
예 4: 그룹화 사용
정규 표현식의 그룹화를 사용하면 패턴을 하위 패턴으로 분할하고 일치 시 그 중 하나만 고려할 수 있습니다. 그룹화는 괄호를 사용하여 표현됩니다. 아래 예에서는 "hello" 또는 "world"가 포함된 문자열을 일치시킵니다.
#include <iostream> #include <regex> int main() { std::string text1 = "hello"; std::string text2 = "world"; std::string text3 = "hello world!"; std::regex pattern("(hello|world)"); if (std::regex_search(text1, pattern)) { std::cout << "Match found in text1!" << std::endl; } if (std::regex_search(text2, pattern)) { std::cout << "Match found in text2!" << std::endl; } if (std::regex_search(text3, pattern)) { std::cout << "Match found in text3!" << std::endl; } return 0; }
이 예에서는 정규식 "(hello|world)"를 사용하여 "hello"와 "world"를 두 그룹으로 그룹화합니다. 첫 번째 텍스트 "hello"에서 정규식은 첫 번째 그룹에만 일치하므로 프로그램은 "Matchfound in text1!"을 출력합니다. 두 번째 텍스트 "world"에서 정규식은 두 번째 그룹에만 일치하므로 프로그램은 "Matchfound in text2!"를 출력합니다. 세 번째 텍스트 "hello world!"에서 정규식은 첫 번째 또는 두 번째 그룹과 일치하므로 프로그램은 "Matchfound in text3!"을 출력합니다.
요약
이 글에서는 C++에서 정규식을 사용하여 텍스트를 구문 분석하는 방법을 소개했습니다. 메타문자, 수량자, 그룹화 등 가장 일반적으로 사용되는 정규식 구문 중 일부를 자세히 설명합니다. 이 예제가 정규식을 사용하여 텍스트 데이터를 처리하는 방법을 더 잘 이해하는 데 도움이 되기를 바랍니다.
위 내용은 C++에서 정규식을 사용하여 텍스트 구문 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!