std::regex 拆解 ip:port 形式
时间: 2023-07-18 08:27:29 浏览: 168
好的,以下是一个使用 C++11 标准库的 `std::regex` 来拆解 IP 地址和端口号的示例代码:
```cpp
#include <iostream>
#include <string>
#include <regex>
int main()
{
std::string input = "127.0.0.1:8080";
std::regex pattern("(\\d+\\.\\d+\\.\\d+\\.\\d+):(\\d+)");
std::smatch match;
if (std::regex_match(input, match, pattern)) {
std::string ip = match[1];
std::string port = match[2];
std::cout << "IP address: " << ip << std::endl;
std::cout << "Port: " << port << std::endl;
}
return 0;
}
```
在上面的示例代码中,我们定义了一个正则表达式模式,用于匹配 IP 地址和端口号的组合。然后我们使用 `std::regex_match` 函数来尝试匹配输入字符串和正则表达式模式,如果匹配成功,我们就可以使用 `std::smatch` 对象来访问捕获到的分组。最后我们打印出 IP 地址和端口号。
相关问题
std::regex
std::regex 是C++11引入的正则表达式库。它可以实现字符串匹配、替换、分割等功能。使用 std::regex 需要包含 <regex> 头文件。
具体使用方法可以参考以下示例:
```c++
#include <iostream>
#include <string>
#include <regex>
int main() {
std::string str = "hello world";
std::regex pattern("ello");
if (std::regex_search(str, pattern)) {
std::cout << "Matched" << std::endl;
} else {
std::cout << "Not matched" << std::endl;
}
return 0;
}
```
输出结果为:
```
Matched
```
std::regex使用
std::regex是C++标准库中的一个类,用于处理正则表达式。通过std::regex,你可以使用正则表达式来匹配、查找和替换字符串。
以下是一个简单的示例,展示了如何使用std::regex进行匹配:
```cpp
#include <iostream>
#include <regex>
int main() {
std::string text = "Hello, world!";
std::regex pattern("world");
if (std::regex_search(text, pattern)) {
std::cout << "Pattern found." << std::endl;
} else {
std::cout << "Pattern not found." << std::endl;
}
return 0;
}
```
在上面的示例中,我们定义了一个字符串`text`和一个正则表达式模式`pattern`。然后,我们使用`std::regex_search`函数在字符串中搜索模式是否出现。如果找到了匹配的模式,就输出"Pattern found.";否则输出"Pattern not found."。
除了`std::regex_search`,std::regex还提供了其他一些方法,如`std::regex_match`用于检查整个字符串是否与模式匹配,`std::regex_replace`用于替换匹配的部分等等。
当然,这只是std::regex的基本用法,更复杂的正则表达式匹配可以使用不同的标志和语法。你可以参考C++标准库文档或其他正则表达式教程了解更多详细信息。
阅读全文