以下格式的正则表达式
Regex expression for the below format
我需要为c ++正则表达式编写以下格式的正则表达式
Ffs\2FA2A6DA-11D5-4dc3-999A-749648B03C56PiSmmIpl\2FA2A6DA-11D5-4dc3-999A-749648B03C56.map
在这里我需要获取字符串
2FA2A6DA-11D5-4dc3-999A-749648B03C56PiSmmIpl
表示 GUID 后跟字符
我正在尝试这个但没有效果
[0-9A-Fa-f{9}]+-[0-9A-Fa-f{4}]+-[0-9A-Fa-f{4}]+-[0-9A-Fa-f{4}]+-[0-9A-Fa-f{12}].*\$
请提供您的建议。
您可以使用
std::regex rx("[0-9A-Fa-f]{8}(?:-[0-9A-Fa-f]{4}){3}-[0-9A-Fa-f]{12}([^\\]*)")
请参阅正则表达式演示。基本上,在删除+
量词的同时将限制量词移到字符类之外,然后确保正确转义(在非原始字符串文本中,
\\
(,最后使用[^\]*
构造匹配除以外的任何 0+ 字符。
详
-
[0-9A-Fa-f]{8}
- 8 个十六进制字符 -
(?:-[0-9A-Fa-f]{4}){3}
- 出现 3 次用-
分隔的 4 个十六进制字符 -
-
- 连字符 -
[0-9A-Fa-f]{12}
- 12 个十六进制字符 -
([^\]*)
- 第 1 组:除以外的任何 0+ 字符。
C++演示:
#include <iostream>
#include <regex>
#include <string>
using namespace std;
int main() {
regex rex1("[0-9A-Fa-f]{8}(?:-[0-9A-Fa-f]{4}){3}-[0-9A-Fa-f]{12}([^\\]*)");
string s("Ffs\2FA2A6DA-11D5-4dc3-999A-749648B03C56PiSmmIpl\2FA2A6DA-11D5-4dc3-999A-749648B03C56.map");
smatch m;
if (regex_search(s, m, rex1)) {
std::cout << "Whole match: " << m[0] << std::endl;
std::cout << "PiSmmIpl value: " << m[1] << std::endl;
}
return 0;
}
输出:
Whole match: 2FA2A6DA-11D5-4dc3-999A-749648B03C56PiSmmIpl
PiSmmIpl value: PiSmmIpl
相关文章:
- 使用正则表达式regex_search在字符串中查找字符串
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- C++正则表达式无限循环
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- 定义有趣的宏和正则表达式在Z3 C++绑定
- 带有多个字符分隔符的正则表达式
- C++ 使用增强正则表达式库时断言崩溃
- 有人可以帮助我处理正则表达式吗?
- 使用正则表达式获取大括号块的列表
- 正则表达式以匹配数字的重复模式,后跟任何类型的分隔符?
- 组合正则表达式部分使用 | 不起作用的 C++
- 为什么C++正则表达式这么慢?
- 如何使HTML5电子邮件验证正则表达式在C++中工作?
- 在C++中实现正则表达式
- C++正则表达式替换整个单词
- 以下格式的正则表达式
- 如何使用正则表达式将输入数字格式化为字符串
- 如何编写正则表达式以匹配以下数字格式?
- VS10 中文件名的正则表达式格式有什么问题<regex>?
- Python RE -正则表达式,用于匹配带有转义引号的类似printf格式字符串