C++ 关于正则表达式

C++ 关于正则表达式,c++,regex,C++,Regex,我在解决这个问题时遇到了一个问题: 我试着做一些类似的事情:(\d+x\d+) 但是为什么它不起作用呢?我们如何使用“分组”呢?谢谢 input text required capturing group result 1280x720 1280, 720 1920x1600 1920, 1600 1024x768 1024, 768 捕获组被括号(和)包围 在您的正则表达式(\d+x\d+)中,有一个捕获组-整个\d+x\d+对象,因为整个正则表达式被捕获组包围 在这个问题

我在解决这个问题时遇到了一个问题:

我试着做一些类似的事情:
(\d+x\d+)

但是为什么它不起作用呢?我们如何使用“分组”呢?谢谢

input text  required capturing group result
1280x720    1280, 720
1920x1600   1920, 1600
1024x768    1024, 768

捕获组被括号
包围

在您的正则表达式
(\d+x\d+
)中,有一个捕获组-整个
\d+x\d+
对象,因为整个正则表达式被捕获组包围

在这个问题上,你需要得到两个独立的数字。因此,一组将“捕获”一个数字,另一组将“捕获”另一个数字

因此,对于第一组,您将只捕获第一个数字(字符序列)-
(\d+)
。第二个也一样

此外,您不需要使用
x
,因此可以将其置于任何捕获组之外

因此,
(\d+)x(\d+)
将是您想要的。

此练习是关于捕获组的。要求分别捕获两个数字序列,并跳过
x
,如下所示:

(\d+)x(\d+)
另一方面,您的解决方案将整个输入捕获到由括号表示的单个捕获组中


当需要处理正则表达式捕获的输入的各个部分时,捕获组的概念非常重要,而不是处理整个捕获。在链接的示例中,您可以获取分辨率水平分量的第一组,以及分辨率垂直分量的第二组。如果没有两个单独的捕获组,您需要在代码中找到
x
,并进行额外的拆分。

您需要两个特定的匹配项-x和y分辨率。也就是说,你需要两个小组

所以,您知道您需要:
()()

您不希望捕获x,而x位于您希望捕获的对象之间:
()x()

最后,我们需要填写我们正在搜索的内容。我们需要一个或多个(+)数字(\d)。因此,完成的正则表达式为:


(\d+)x(\d+)

我并不擅长正则表达式,但我用
(\d+)x(\d+)
实现了它。是否涉及编程问题?