c++里面可以用ID=letter(letter | digit)* NUM=digit digit*吗
时间: 2024-09-12 22:01:52 浏览: 48
在C++中,虽然标准库本身并不直接提供正则表达式的支持,但是你可以借助外部库,比如`<regex>`库,或者第三方库如`boost::regex`来使用类似`ID=letter(letter | digit)*` 和 `NUM=digit digit*` 的模式匹配字符串。以下是一个使用`std::regex`的例子:
```cpp
#include <regex>
#include <iostream>
bool is_valid_id(const std::string& input, const std::regex& id_pattern) {
return std::regex_match(input, id_pattern);
}
bool is_valid_num(const std::string& input, const std::regex& num_pattern) {
return std::regex_match(input, num_pattern);
}
// 定义正则表达式
const std::regex ID_PATTERN(R"^(ID=[a-zA-Z](?:[a-zA-Z0-9]|_)*$)");
const std::regex NUM_PATTERN(R"^(NUM=\d{1,}$|NUM=\d{2,}$)$"); // 假设最多两位数
int main() {
std::string test_cases[] = {"ID_ABC", "ID_123", "NUM_1", "NUM_12", "NOT_A_VALID_ID"};
for (const auto& case_str : test_cases) {
if (is_valid_id(case_str, ID_PATTERN)) {
std::cout << case_str << " is a valid ID.\n";
} else {
std::cout << case_str << " is not a valid ID.\n";
}
if (is_valid_num(case_str, NUM_PATTERN)) {
std::cout << case_str << " is a valid NUM.\n";
} else {
std::cout << case_str << " is not a valid NUM.\n";
}
}
return 0;
}
```
在这个例子中,我们首先定义了两个正则表达式模式,并分别检查输入字符串是否符合ID或NUM的模式。
阅读全文