gpt4 book ai didi

c++ - (V)C++ (2010) 正则表达式, "recursive captures"

转载 作者:行者123 更新时间:2023-11-28 03:29:02 25 4
gpt4 key购买 nike

我想要匹配和捕获表达式的运算符和操作数,例如:

  • 1
  • x
  • 1 + x
  • x + y + 3 + 10
  • 等...

所以在正则表达式上,

(\w+)(\s*([+])\s*(\w+))*

似乎可以做到,但如何获得匹配的捕获?注意 [+] 和 (\w+) 已经在 1 个捕获中。

最佳答案

不幸的是,这是不可能的(至少在我所知道的任何正则表达式中)。如果一个捕获组被多次使用,则捕获将始终被它捕获的最后一个东西填充。简单的例子:([a-z])*适用于abc只会给你c .

我建议您仅使用正则表达式来检查格式是否有效。然后您可以在 \s*\b\s* 的匹配处拆分字符串.这应该会导致包含 x 的数组, + , y , + , 3 , + , 10对于你的最后一个例子。

Here是一些示例代码,显示如何使用正则表达式拆分字符串,使用 boost::regex .

关于c++ - (V)C++ (2010) 正则表达式, "recursive captures",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13119738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com