c + + 11 정규 표현 식 기본 사용

3695 단어
c + + 11 정규 표현 식
상용 방법 regexmatch regex_search regex_replace 등.
regex_match 는 정규 표현 식 이 패턴 문자열 과 완전히 일치 해 야 합 니 다. 예 를 들 어:
string str = "o ";
regex pattern("o\\s");

bool matched = regex_match(str,pattern);
if (matched) {
    cout << "matched.." << endl;
}else{
    cout << "not matched." << endl;
}

위 에서 일치 할 수 있 습 니 다. 수정 하면:
string str = "o 1";
regex pattern("o\\s");

bool matched = regex_match(str,pattern);
if (matched) {
    cout << "matched.." << endl;
}else{
    cout << "not matched." << endl;
}

not matched 입 니 다.
regex_match 는 하위 모드 의 일치 성 을 포함 하고 일치 하 는 결 과 를 표시 합 니 다. 주로 사 용 됩 니 다.
match_results<:const_iterator> result

일치 하 는 결 과 를 저장 합 니 다.
    string str = "1:2:33:344";
    regex pattern("(\\d{1,3}):(\\d{1,3}):(\\d{1,3}):(\\d{1,3})");

    match_results<:const_iterator> result;
    bool matched = regex_match(str,result,pattern);
    if (matched) {
        cout << "matched.." << endl;
        printf("result.size = %d
",(int)result.size()); for (int i = 0; i < result.size(); ++i) { printf("result[%d]:%s
",i,result[i].str().c_str()); } }else{ cout << "not matched." << endl; }

출력: matched.. result. size = 5 result [0]: 1: 23: 344 result [1]: 1 result [2]: 2 result [3]: 33 result [4]: 344 아이디어 인쇄 결과 result [0]
regex_search 는 일치 하 는 항목 만 있 으 면 됩 니 다.
string str = "o 1";
regex pattern("\\w\\s");

bool matched = regex_search(str,pattern);
if (matched) {
    cout << "matched.." << endl;
}else{
    cout << "not matched." << endl;
}

출력: matched.. 첫 번 째 일치 항목 만 출력 하려 면 smatch 로 결 과 를 저장 합 니 다.
string str = "o 1s;23235;t;dsf;sd 66 ";
regex pattern(";");

smatch result;
bool matched = regex_search(str,result,pattern);
if (matched) {
    cout << "matched.." << endl;
    cout <<  "result.size:" << result.size() << endl;
    for (int i = 0; i < result.size(); ++i) {
        printf("result[%d]:\t%s
",i,result[i].str().c_str()); } }else{ cout << "not matched." << endl; }

출력 결 과 는: matched. result. size: 1 result [0]:;
모든 일치 하 는 결 과 를 출력 하려 면 sregex 를 사용 해 야 합 니 다.token_iterator
string str = "o 1s 23235 t ds f sd 66 ";
regex pattern("\\w\\s");

sregex_token_iterator end;
sregex_token_iterator start(str.begin(),str.end(),pattern);

while (start != end) {
    cout << (*start) << endl;
    ++start;
}

출력: o s 5 t s f d 6
regex_replace 방법 으로 일치 하 는 것 을 교체 합 니 다.
string str = "o 1s 23235 t ds f sd 66 ";
regex pattern("\\w\\s");

bool matched = regex_search(str,pattern);
if (matched) {
    cout << "matched ." << endl;
    auto newStr = regex_replace(str,pattern,"---");
    printf("newStr : %s
",newStr.c_str()); }else{ cout << "not matched ." << endl; }

출력 결 과 는: matched. newStr: --- 1 - -- 2323 - --- d - --- s - -- 6 - --
위 는 c + + 11 정규 표현 식 의 기본 사용 입 니 다. 내용 은 기본적으로 이 작가 에서 나 옵 니 다.
다음으로 전송:https://www.cnblogs.com/daihanlong/p/5450762.html

좋은 웹페이지 즐겨찾기