我想捕获一个必需参数和一个可选参数。在ruby中捕获可选参数
可以说我有一个字符串
"X or Y"
和 “或Y” 是可选的。
我可以做
scan /(.*) (or (.*))?/
和接收与大小3的阵列,其还包括用于可选的捕获结果。
我该如何写扫描才能获得仅有2 X和Y可能性的数组?
谢谢
我想捕获一个必需参数和一个可选参数。在ruby中捕获可选参数
可以说我有一个字符串
"X or Y"
和 “或Y” 是可选的。
我可以做
scan /(.*) (or (.*))?/
和接收与大小3的阵列,其还包括用于可选的捕获结果。
我该如何写扫描才能获得仅有2 X和Y可能性的数组?
谢谢
您可以进行第二部分的外组作为non-capturing
组:
/(.*) (?:or (.*))?/
现在你只有两个在你的正则表达式捕获组:
X
部分。Y
部分。因此,您将只收到一个包含这两个组的数组。因此你不会得到or
部分。
我对这个场景需要相同的答案,为了得到更好的解决方案,我搜索了很多东西,最终我得到了成功。在任何情况下,它都可以很好地工作。 URL是否有一个或两个参数。即使我们可以用n个参数来扩展它。很容易做到。
我的问题陈述是,我有两个网址差异很小。
你可以看到,第一个URL有700x0/filters:quality(90)
和第二网址只有一个参数600x0
而正则表达式是 - (http|https):\/\/thumbor-cdn1.abc.com\/unsafe\/((.*?)|\/(.*?))\/(http|https):\/\/s3.amazonaws.com\/(abc|xyz)
上述网址用于例如宗旨,为你的情况,你可以使用有效的网址。 谢谢!
您可以尝试使外部组可选 - '/(.*)(?:或(。*))?/' – 2013-02-17 12:16:59
很好用!你可以解释吗? – kambi 2013-02-17 12:25:02
'(?:...)'创建一个非捕获组,这不会增加总组计数。所以,你不会把它作为单独的组。 – 2013-02-17 12:31:02