我想捕獲一個必需參數和一個可選參數。在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