假设我想创建一个 boost.regex 表达式来匹配字符串,例如
“重复:5 aaaa” “重复:3 aaa”
有没有办法通过提升来做到这一点?
我没有特别使用 boost::regex,但是您要求的正则表达式是直截了当的。浏览 boost::regex 文档,看起来你会做类似的事情:
boost::regex e("repetitions:\\s+\\d\\s+[a-zA-Z]+");
(双斜线是这样转义序列不会被编译器吞噬)
注意:如果您还尝试验证第一个数字是否与字母“a”的数量匹配,那么仅使用正则表达式将无法正常工作。正则表达式只匹配字符,对它们的含义没有任何线索,因此 '5' 和 '3' 不会以任何数字方式出现。查看他们关于Captures的文档。您需要将数字作为字符串,lexical_cast
将其转换为整数,然后使用它来验证该aaaaa
部分。