boost中的正则表达式中的"."是表示任意字符吗?还是除\n字符以外?
理论上来讲,"."表示的是除\n以外的任意字符,但是经过我的测试,好象"."也可以匹配\n?
这是为什么呢?我的程序如下:
.......//次要代码省略
int main(int argc, char* argv[])
{
char str1[MAX_PATH] = {0};
::strcpy(str1, ".");
regex expression(str1);
std::string in;
cmatch what;
while(true)
{
cout << "enter test string" << endl;
char szIn[MAX_PATH*2] = {0};
::strcpy(szIn, "\n");
if(regex_match(szIn, what, expression))
{
for(int i=0;i<what.size();i++)
cout<<"str :"<<what[i].str()<<endl;
}
else
{
cout<<"Error Input"<<endl;
}
}
return 0;
}
上面的程序,执行结果竟然是匹配,而不是想象中的输入“error input”,难道"."也可以匹配\n字符吗?
谢谢
这是为什么呢?我的程序如下:
.......//次要代码省略
int main(int argc, char* argv[])
{
char str1[MAX_PATH] = {0};
::strcpy(str1, ".");
regex expression(str1);
std::string in;
cmatch what;
while(true)
{
cout << "enter test string" << endl;
char szIn[MAX_PATH*2] = {0};
::strcpy(szIn, "\n");
if(regex_match(szIn, what, expression))
{
for(int i=0;i<what.size();i++)
cout<<"str :"<<what[i].str()<<endl;
}
else
{
cout<<"Error Input"<<endl;
}
}
return 0;
}
上面的程序,执行结果竟然是匹配,而不是想象中的输入“error input”,难道"."也可以匹配\n字符吗?
谢谢
...全文
相关推荐
Boost.Regex.C++正则表达式快速入门
#### 基本语法介绍Boost.Regex中的正则表达式语法主要包括以下几方面:1. **特殊字符**:除“.”、“^”、“?”
bcb封装的BOOST正则表达式库
**量词**:如`*`, `+`, `?`, `{n}`, `{n, m}`等控制匹配次数。6. **选择和否定**:`|`表示或,`[^...]`表示否定匹配,即匹配除了指定字符外的任何字符。7.
boost. regex
匹配任意单个字符```cppboost::regex reg(".");````.`符号在正则表达式中表示匹配任意单个字符。##### 4.
正则表达式中\w不能识别中文
匹配中文字符的正则表达式:要匹配中文字符,可以使用Unicode范围\w只能匹配ASCII字符集中的字母、数字以及下划线。对于中文字符,可以使用范围码点[\u4e00-\u9fa5]。
C++之BOOST字符串查找示例
子串iterator_range<string::iterator> range = find_first(str1, string("abc"));````find_first`返回一个迭代器范围,表示找到的子串在原字符串中的位置


