我在解决此问题时遇到了问题:http://regexone.com/lesson/13
我尝试做的事情如下:(\d+x\d+)
但为什么它不起作用?我们如何使用“分组”呢?谢谢!
input text required capturing group result
1280x720 1280, 720
1920x1600 1920, 1600
1024x768 1024, 768
答案 0 :(得分:1)
捕获组被括号(
和)
包围。
在正则表达式(\d+x\d+)
中,有一个捕获组 - 整个\d+x\d+
,因为整个正则表达式都被捕获组包围。
特别是在那个问题中,你想得到两个单独的数字。因此,一个组应“捕获”一个数字而另一个组“捕获”另一个数字。
因此,对于第一组,您将仅捕获第一个数字(字符序列) - (\d+)
。同样如此。
此外,您不需要x
,因此您可以将其置于任何捕获组之外。
因此,(\d+)x(\d+)
就是你想要的。
答案 1 :(得分:1)
练习是关于捕捉群组。要求是分别捕获两个数字序列,并跳过x
,如下所示:
(\d+)x(\d+)
另一方面,您的解决方案将整个输入捕获到由括号表示的单个捕获组中。
当您需要处理正则表达式捕获的输入的各个部分时,捕获组的概念非常重要,而不是处理整个捕获。在链接的示例中,您可以获取分辨率的水平分量的第一组,以及分辨率的垂直分量的第二组。如果没有两个单独的捕获组,您需要在代码中找到x
,然后再进行拆分。
答案 2 :(得分:1)
您需要匹配两个特定内容 - x和y分辨率。这意味着,您需要两个小组。
所以,你知道你需要:()()
您不希望捕获的x和x位于您想捕获的内容之间:
()x()
最后,我们需要填写我们正在搜索的内容。我们希望一个或多个(+)数字(\ d)。因此,完成的正则表达式是:
(\d+)x(\d+)