c++ 正则表达式例子
时间: 2025-01-07 08:53:40 浏览: 3
### C++ 正则表达式使用示例
#### 匹配整个字符串
当需要确认一个完整的字符串是否符合特定模式时,`std::regex_match` 函数非常有用。此函数会尝试将整个目标序列与给定的正则表达式相匹配[^2]。
```cpp
#include <iostream>
#include <regex>
int main() {
std::string text = "hello";
std::regex re("h.*o");
bool match_result = std::regex_match(text, re);
if(match_result){
std::cout << "The entire string matches the pattern." << std::endl;
}
}
```
#### 查找并打印所有匹配项
对于在一个较大文本内寻找多个符合条件子串的情况,则应采用 `std::sregex_iterator` 来遍历所有的匹配实例[^5]。
```cpp
void find_all_matches(const std::string& str, const std::string& pat) {
std::regex r(pat);
auto words_begin = std::sregex_iterator(str.begin(), str.end(), r);
auto words_end = std::sregex_iterator();
for(std::sregex_iterator i = words_begin; i != words_end; ++i){
std::smatch match = *i;
std::string match_str = match.str();
std::cout << "Found: \"" << match_str << "\"\n";
}
}
// 测试案例
find_all_matches("Hello cei world freind meizu", "[^c]ei");
```
#### 替换指定模式的内容
有时可能希望按照一定规则修改原始字符串,在这种情况下可利用 `std::regex_replace` 方法来实现这一目的。
```cpp
#include <iostream>
#include <regex>
int main(){
std::string original_text = "This is a test.";
std::regex word_regex("(\\w+)\\W*(\\w+)");
std::string result;
// 将两个连续单词的位置互换
result = std::regex_replace(original_text, word_regex, "$2 $1");
std::cout << "Original Text : " << original_text << "\nReplaced Text:" << result << '\n';
}
```
阅读全文