sub_match 클래스
부분 일치를 설명합니다.
구문
template <class BidIt>
class sub_match
: public std::pair<BidIt, BidIt>
매개 변수
BidIt
부분 일치에 대한 반복기 형식입니다.
설명
클래스 템플릿은 regex_match 또는 regex_search 호출에서 캡처 그룹과 일치하는 문자 시퀀스를 지정하는 개체를 설명합니다. match_results Class 형식의 개체는 검색에서 사용된 정규식의 각 캡처 그룹에 대해 하나씩 이러한 개체의 배열을 보유합니다.
캡처 그룹이 일치하지 않으면 개체의 데이터 멤버 matched
가 false이고 두 반복기 first
( second
기본 std::pair
에서 상속됨)가 동일합니다. 캡처 그룹이 일치하는 경우 matched
는 true를 보유하고, 반복기 first
는 캡처 그룹과 일치하는 대상 시퀀스의 첫 번째 문자를 가리키며, 반복기 second
는 캡처 그룹과 일치하는 대상 시퀀스의 마지막 문자를 지난 한 위치를 가리킵니다. 길이가 0인 일치 항목의 경우 멤버 matched
는 true이고 두 반복기는 같으며 둘 다 일치 위치를 가리킵니다.
길이가 0인 일치는 캡처 그룹이 어설션으로만 구성되거나 0 반복을 허용하는 반복으로 구성된 경우에 발생할 수 있습니다. 예시:
"^"은 대상 시퀀스 "a"와 일치합니다. 즉, 캡처 그룹 0에 해당하는 sub_match
개체는 둘 다 시퀀스의 첫 번째 문자를 가리키는 반복기를 보유합니다.
"b(a*)b"는 대상 시퀀스 "bb"와 일치합니다. 즉, 캡처 그룹 1에 해당하는 sub_match
개체는 둘 다 시퀀스의 두 번째 문자를 가리키는 반복기를 보유합니다.
Typedef
형식 이름 | 설명 |
---|---|
difference_type | 반복기 차이의 형식입니다. |
iterator | 반복기의 형식입니다. |
value_type | 요소의 형식입니다. |
멤버 함수
멤버 함수 | 설명 |
---|---|
compare | 시퀀스에 대해 부분 일치를 비교합니다. |
length | 부분 일치의 길이를 반환합니다. |
일치 | 일치에 성공했는지를 나타냅니다. |
str | 부분 일치를 문자열로 변환합니다. |
연산자
연산자 | 설명 |
---|---|
연산자 basic_string<value_type> | 문자열에 부분 일치를 캐스팅합니다. |
예시
// std__regex__sub_match.cpp
// compile with: /EHsc
#include <regex>
#include <iostream>
int main()
{
std::regex rx("c(a*)|(b)");
std::cmatch mr;
std::regex_search("xcaaay", mr, rx);
std::csub_match sub = mr[1];
std::cout << "matched == " << std::boolalpha
<< sub.matched << std::endl;
std::cout << "length == " << sub.length() << std::endl;
std::csub_match::difference_type dif = std::distance(sub.first, sub.second);
std::cout << "difference == " << dif << std::endl;
std::csub_match::iterator first = sub.first;
std::csub_match::iterator last = sub.second;
std::cout << "range == " << std::string(first, last)
<< std::endl;
std::cout << "string == " << sub << std::endl;
std::csub_match::value_type const *ptr = "aab";
std::cout << "compare(\"aab\") == "
<< sub.compare(ptr) << std::endl;
std::cout << "compare(string) == "
<< sub.compare(std::string("AAA")) << std::endl;
std::cout << "compare(sub) == "
<< sub.compare(sub) << std::endl;
return (0);
}
matched == true
length == 3
difference == 3
range == aaa
string == aaa
compare("aab") == -1
compare(string) == 1
compare(sub) == 0
요구 사항
헤더:<regex>
네임스페이스: std
sub_match::compare
시퀀스에 대해 부분 일치를 비교합니다.
int compare(const sub_match& right) const;
int compare(const basic_string<value_type>& str) const;
int compare(const value_type *ptr) const;
매개 변수
right
비교할 부분 일치입니다.
str
비교할 문자열입니다.
ptr
비교할 null 종료 시퀀스입니다.
설명
첫 번째 멤버 함수는 일치하는 시퀀스 [first, second)
를 일치하는 시퀀스에 [right.first, right.second)
와 비교합니다. 두 번째 멤버 함수는 일치하는 시퀀스 [first, second)
를 문자 시퀀스에 [right.begin(), right.end())
와 비교합니다. 세 번째 멤버 함수는 일치하는 시퀀스 [first, second)
를 문자 시퀀스 [right, right + std::char_traits<value_type>::length(right))
와 비교합니다.
각 함수는 다음을 반환합니다.
일치하는 시퀀스에서 서로 다른 첫 번째 값이 피연산자 시퀀스의 해당 요소보다 작은 경우(std::char_traits<value_type>::compare
에서 확인) 또는 둘 다 공통 접두사를 갖지만 대상 시퀀스가 더 긴 경우 음수 값을 반환합니다.
두 시퀀스가 요소 단위로 같고 동일한 길이를 가진 경우 0
그렇지 않으면 양수 값
sub_match::d ifference_type
반복기 차이의 형식입니다.
typedef typename iterator_traits<BidIt>::difference_type difference_type;
설명
typedef는 iterator_traits<BidIt>::difference_type
의 동의어입니다.
sub_match::iterator
반복기의 형식입니다.
typedef BidIt iterator;
설명
typedef는 템플릿 형식 인수 Bidit
의 동의어입니다.
sub_match::length
부분 일치의 길이를 반환합니다.
difference_type length() const;
설명
멤버 함수는 일치하는 시퀀스의 길이 또는 일치하는 시퀀스가 없는 경우 0을 반환합니다.
sub_match::matched
일치에 성공했는지를 나타냅니다.
bool matched;
설명
멤버는 true
와 연결된 캡처 그룹이 정규식 일치의 일부인 경우에만 *this
입니다.
sub_match::operator basic_string<value_type>
문자열에 부분 일치를 캐스팅합니다.
operator basic_string<value_type>() const;
설명
멤버 연산자는 str()
를 반환합니다.
sub_match::str
부분 일치를 문자열로 변환합니다.
basic_string<value_type> str() const;
설명
멤버 함수는 basic_string<value_type>(first, second)
를 반환합니다.
sub_match::value_type
요소의 형식입니다.
typedef typename iterator_traits<BidIt>::value_type value_type;
설명
typedef는 iterator_traits<BidIt>::value_type
의 동의어입니다.