用于匹配多个组的正则表达式
Regular Expression to match multiple groups
我正在尝试编写一个正则表达式来匹配包含两组不同十六进制数字的字符串,长度为 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++实现中可能缺少支持其他模式。
相关文章:
- 标准库中的任何正则表达式语法是否支持 (?(定义)用于子模式参考?
- 适用于 gcc 4.8 的任何正则表达式库
- C++ 中用于搜索字符串模式的正则表达式
- 正则表达式,用于类似 python 的函数参数解析
- 提升正则表达式 cpp 用于查找 %% 之间的字符串,输出不包括 % 字符本身
- 用于匹配多个组的正则表达式
- 用于解析 xrandr 响应的正则表达式
- #include < regex.h> 用于创建正确正则表达式的问题
- 用于匹配字母数字的可移植正则表达式
- 用于获取函数签名的 C++ 正则表达式
- 用于提取[]之间内容的正则表达式
- 将 C++11 正则表达式与 gcc 4.8.2 一起使用时会出现奇怪的结果(但适用于 Boost 正则表达式)
- 正则表达式适用于 Linux,但不适用于 Solaris
- C++11 正则表达式是否适用于 UTF-8 字符串
- C++用于解析正则表达式的库
- 用于分析数据的正则表达式
- 用于查找函数的正则表达式
- 用于匹配 C++ 范围字符串文本的正则表达式 (L "..." )
- 用于匹配序列的正则表达式
- Qt / QRegExp 正则表达式用于括号和新行或"r"?