basic_regex 类

包装正则表达式。

语法

template <class Elem, class RXtraits>
class basic_regex

参数

Elem
要匹配的元素的类型。

RXtraits
元素的特征类。

备注

这个类模板描述包含正则表达式的对象。 这个类模板的对象可以传递给模板函数 regex_matchregex_searchregex_replace。 它还传递合适的文本字符串自变量,以搜索与正则表达式匹配的文本。 这个类模板有两个专用化,包括针对 char 类型元素的类型定义 regex,以及针对 wchar_t 类型元素的类型定义 wregex

模板自变量 RXtraits 描述这个类模板支持的正则表达式语法的各个重要属性。 一个指定这些正则表达式特征的外部接口必须与类型为 regex_traits 类的对象相同的类。

某些函数使用操作数序列来定义正则表达式。 可以通过多种方式指定此操作数序列:

ptr:从 ptr(不能为 null 指针)开始、以 null 结尾的序列(例如 C 字符串,用于 char 类型的 Elem),其中结尾元素为值 value_type(),且不是操作数序列的一部分

ptrcount:从 ptr(不能为空指针)开始的 count 元素序列

strbasic_string 对象 str 指定的序列

firstlast:范围 [first, last) 中由迭代器 firstlast 分隔的元素序列

rightbasic_regex 对象 right

以上成员函数还使用自变量 flags 指定用于解释正则表达式的各个选项以及 RXtraits 类型描述的选项。

成员

成员 默认值
public static const flag_type icase regex_constants::icase
public static const flag_type nosubs regex_constants::nosubs
public static const flag_type optimize regex_constants::optimize
public static const flag_type collate regex_constants::collate
public static const flag_type ECMAScript regex_constants::ECMAScript
public static const flag_type basic regex_constants::basic
public static const flag_type extended regex_constants::extended
public static const flag_type awk regex_constants::awk
public static const flag_type grep regex_constants::grep
public static const flag_type egrep regex_constants::egrep
private RXtraits traits

构造函数

构造函数 说明
basic_regex 构造正则表达式对象。

Typedef

类型名称 说明
flag_type 语法选项标志的类型。
locale_type 存储的区域设置对象的类型。
value_type 元素类型。

成员函数

成员函数 说明
assign 将一个值分配到正则表达式对象。
flags 返回语法选项标志。
getloc 返回存储的区域设置对象。
imbue 更改存储的区域设置对象。
mark_count 返回匹配的子表达式的数目。
swap 交换两个正则表达式对象。

运算符

运算符 说明
operator= 将一个值分配到正则表达式对象。

要求

标头:<regex>

命名空间: std

示例

// std__regex__basic_regex.cpp
// compile with: /EHsc
#include <regex>
#include <iostream>

using namespace std;

int main()
{
    regex::value_type elem = 'x';
    regex::flag_type flag = regex::grep;

    elem = elem;  // to quiet "unused" warnings
    flag = flag;

    // constructors
    regex rx0;
    cout << "match(\"abc\", \"\") == " << boolalpha
        << regex_match("abc", rx0) << endl;

    regex rx1("abcd", regex::ECMAScript);
    cout << "match(\"abc\", \"abcd\") == " << boolalpha
        << regex_match("abc", rx1) << endl;

    regex rx2("abcd", 3);
    cout << "match(\"abc\", \"abc\") == " << boolalpha
        << regex_match("abc", rx2) << endl;

    regex rx3(rx2);
    cout << "match(\"abc\", \"abc\") == " << boolalpha
        << regex_match("abc", rx3) << endl;

    string str("abcd");
    regex rx4(str);
    cout << "match(string(\"abcd\"), \"abc\") == " << boolalpha
        << regex_match("abc", rx4) << endl;

    regex rx5(str.begin(), str.end() - 1);
    cout << "match(string(\"abc\"), \"abc\") == " << boolalpha
        << regex_match("abc", rx5) << endl;
    cout << endl;

    // assignments
    rx0 = "abc";
    rx0 = rx1;
    rx0 = str;

    rx0.assign("abcd", regex::ECMAScript);
    rx0.assign("abcd", 3);
    rx0.assign(rx1);
    rx0.assign(str);
    rx0.assign(str.begin(), str.end() - 1);

    rx0.swap(rx1);

    // mark_count
    cout << "\"abc\" mark_count == "
        << regex("abc").mark_count() << endl;
    cout << "\"(abc)\" mark_count == "
        << regex("(abc)").mark_count() << endl;

    // locales
    regex::locale_type loc = rx0.imbue(locale());
    cout << "getloc == imbued == " << boolalpha
        << (loc == rx0.getloc()) << endl;

    // initializer_list
    regex rx6({ 'a', 'b', 'c' }, regex::ECMAScript);
    cout << "match(\"abc\") == " << boolalpha
        << regex_match("abc", rx6);
    cout << endl;
}
match("abc", "") == false
match("abc", "abcd") == false
match("abc", "abc") == true
match("abc", "abc") == true
match(string("abcd"), "abc") == false
match(string("abc"), "abc") == true

"abc" mark_count == 0
"(abc)" mark_count == 1
getloc == imbued == true
match("abc") == true

basic_regex::assign

将一个值分配到正则表达式对象。

basic_regex& assign(
    const basic_regex& right);

basic_regex& assign(
    const Elem* ptr,
    flag_type flags = ECMAScript);

basic_regex& assign(
    const Elem* ptr,
    size_type len,
    flag_type flags = ECMAScript);

basic_regex& assign(
    initializer_list<_Elem> IList,
    flag_type flags = regex_constants::ECMAScript);

template <class STtraits, class STalloc>
basic_regex& assign(
    const basic_string<Elem, STtraits, STalloc>& str,
    flag_type flags = ECMAScript);

template <class InIt>
basic_regex& assign(
    InIt first, InIt last,
    flag_type flags = ECMAScript);

参数

STtraits
字符串源的特征类。

STalloc
字符串源的分配器类。

InIt
范围源的输入迭代器类型。

right
要复制的正则表达式源。

ptr
指向要复制的序列开头的指针。

flags
复制时要添加的语法选项标志。

len/TD>
要复制的序列的长度。

str
要复制的字符串。

first
要复制的序列的开头。

last
要复制的序列的结尾。

IList
要复制的 initializer_list。

注解

每个成员函数将 *this 保留的正则表达式替换为操作数序列所描述的正则表达式,然后返回 *this

basic_regex::basic_regex

构造正则表达式对象。

basic_regex();

explicit basic_regex(
    const Elem* ptr,
    flag_type flags);

explicit basic_regex(
    const Elem* ptr,
    size_type len,
    flag_type flags);

basic_regex(
    const basic_regex& right);

basic_regex(
    initializer_list<Type> IList,
    flag_type flags);

template <class STtraits, class STalloc>
explicit basic_regex(
    const basic_string<Elem, STtraits, STalloc>& str,
    flag_type flags);

template <class InIt>
explicit basic_regex(
    InIt first,
    InIt last,
    flag_type flags);

参数

STtraits
字符串源的特征类。

STalloc
字符串源的分配器类。

InIt
范围源的输入迭代器类型。

right
要复制的正则表达式源。

ptr
指向要复制的序列开头的指针。

flags
复制时要添加的语法选项标志。

len/TD>
要复制的序列的长度。

str
要复制的字符串。

first
要复制的序列的开头。

last
要复制的序列的结尾。

IList
要复制的 initializer_list。

备注

所有构造函数将存储类型 RXtraits 的默认构造对象。

第一个构造函数构造一个空 basic_regex 对象。 其他构造函数构造 basic_regex 对象,其中包含由操作数序列描述的正则表达式。

一个空 basic_regex 对象在被传递给 regex_matchregex_searchregex_replace 时不匹配任何字符序列。

basic_regex::flag_type

语法选项标志的类型。

typedef regex_constants::syntax_option_type flag_type;

注解

该类型是 regex_constants::syntax_option_type 的同义词。

basic_regex::flags

返回语法选项标志。

flag_type flags() const;

备注

成员函数返回 flag_type 自变量的值,该值传递到对一个 basic_regex::assign 成员函数的最近调用,或者如果没有实施这类调用,则返回传递到构造函数的值。

basic_regex::getloc

返回存储的区域设置对象。

locale_type getloc() const;

注解

成员函数将返回 traits.regex_traits::getloc()

basic_regex::imbue

更改存储的区域设置对象。

locale_type imbue(locale_type loc);

参数

loc
要存储的区域设置对象。

注解

该成员函数将清空 *this 并返回 traits.regex_traits::imbue(loc)

basic_regex::locale_type

存储的区域设置对象的类型。

typedef typename RXtraits::locale_type locale_type;

注解

该类型是 regex_traits::locale_type的同义词。

basic_regex::mark_count

返回匹配的子表达式的数目。

unsigned mark_count() const;

备注

成员函数将返回正则表达式中的捕获组数量。

basic_regex::operator=

将一个值分配到正则表达式对象。

basic_regex& operator=(const basic_regex& right);

basic_regex& operator=(const Elem *str);

template <class STtraits, class STalloc>
basic_regex& operator=(const basic_string<Elem, STtraits, STalloc>& str);

参数

STtraits
字符串源的特征类。

STalloc
字符串源的分配器类。

right
要复制的正则表达式源。

str
要复制的字符串。

备注

每个运算符将 *this 保留的正则表达式替换为操作数序列所描述的正则表达式,然后返回 *this

basic_regex::swap

交换两个正则表达式对象。

void swap(basic_regex& right) throw();

参数

right
要交换的正则表达式对象。

备注

成员函数交换 *this 和 right 之间的正则表达式。 它定时执行此操作且不引发异常。

basic_regex::value_type

元素类型。

typedef Elem value_type;

注解

该类型是模板参数 Elem 的同义词。

另请参阅

<regex>
regex_match
regex_search
regex_replace
regex
wregex
regex_traits 类