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