c++ - 匹配多个组的正则表达式

标签 c++ regex c++11

我正在尝试编写一个正则表达式来匹配包含两组不同的十六进制数字的字符串,长度为 4 个字符,用连字符分隔。例如

00AA-10F2
14ED-7F09
1A20-A55F

这个表达式没问题,

[0-9A-F]{4}-[0-9A-F]{4}

但我想知道是否有更简洁的方法来实现同样的事情。

我正在使用 C++11 std::regex(目前处于默认/ECMAScript 模式),以防出现差异。

如有任何建议,我们将不胜感激!

谢谢,

丰富。

最佳答案

不是真的。你可以写这样的表达式

([0-9A-F]{4}-?){2}

(-?[0-9A-F]{4}){2}

但前者也会匹配 00AA-10F2-00AA10F2- 等字符串,而后者也会匹配 -00AA-10F2-00AA10F2。没有更短的方法来编写正则表达式 [0-9A-F]{4}-[0-9A-F]{4}

但是您可以使用普通的 C++ 技巧,例如:

std::string subexpression("[0-9A-F]{4}");
std::regex regularExpression(subexpression + "-" + subexpression);

或者,默认 ECMAScript 模式以外的模式可能提供正则表达式语法,允许重复某些子表达式,但 C++ 实现中可能缺乏对其他模式的支持。

关于c++ - 匹配多个组的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47199323/

相关文章:

c++ - C++ 中静态指针类成员链接期间的 undefined reference

c++ - 对象指针赋值的指针 vector 的一个元素

jquery - 数据属性中的正则表达式--jquery

c++ - 声明模板的共享指针

c++11 lambda高阶函数包装器递归错误

c++ - 为数组分配空间

c++ - C++-将std::exp应用于std::vector

regex - 使用 Bash 正则表达式匹配 (=~),其中正则表达式包含引号(“字符”)

python - Pandas:如何用另一个值替换 int 子字符串

c++ - 如何使用嵌套初始化构造函数中的一维 vector 初始化矩阵?