作用:C++正则表达式是一种用于匹配、搜索和替换文本的工具。它可以通过一些特定的语法规则来描述一些文本模式,然后在文本中查找符合这些模式的内容。正则表达式可以用于验证输入的数据是否符合特定的格式要求,也可以用于从文本中提取特定的信息。在C++中,可以使用正则表达式库来实现正则表达式的功能。常用的正则表达式库包括Boost.Regex和C++11标准库中的regex库。
匹配的规则:
- 元字符:
- .:匹配任意一个字符
- *:匹配前面的字符0次或多次
- +:匹配前面的字符1次或多次
- ?:匹配前面的字符0次或1次
- ^:匹配字符串的开头
- $:匹配字符串的结尾
- []:匹配方括号中的任意一个字符
- [^]:匹配不在方括号中的任意一个字符
- ():分组,可以用于后向引用
- | : 或者
- 转义字符:
- \d:匹配数字字符
- \D:匹配非数字字符
- \w:匹配字母、数字、下划线字符
- \W:匹配非字母、数字、下划线字符
- \s:匹配空白字符
- \S:匹配非空白字符
- \b:匹配单词边界
- \B:匹配非单词边界
- \n:匹配换行符
- \t:匹配制表符
- {2,}至少两个
以上是C++正则表达式的一些常用规则,具体使用可以参考C++标准库中的regex类。
#include<iostream>
#include<regex>
using namespace std;
int main(){
string str="HyperWorks contains HyperMesh and HyperView and HyperStudy.";
//Hyper 后面可以接受任何字符串
string pattern("Hyper.*");
//string pattern("Hyper[^ ]+[ |.]");
regex r(pattern);
//查找
for(auto it(str.begin(),str.end(),r);end_it;it!=end_it;it++){
cout<<it->str()<<endl;
}
//替换
string str2;
str2=regex_replace(str,r,"Hello");
cout<<str2<<endl;
//匹配
smatch result;
if(regex_match(str,result,r){
cout<<res[0]<<endl;
}
system("pause");
return 0;
}
参考以上例子:
(1)邮箱验证代码
#include<iostream>
#inclde<regex>
using namespace std;
int main(){
int res=0;
while(!res){
string email;
cout<<"please input your email"<<endl;
cin>>email;
if(regex_match(email,regex("[0-9,a-z,A-Z]{6,}@[0-9,a-z,A-Z]{2,}\\.com"))){
cout<<email<<endl;
}
else{
cout<<"input error"<<endl;
}
}
system("pause");
return 0;
}
(2)