我要檢查這個正則表達式一個字符串是否是格式日,兩個或三個點,日期乾紅寶石正則表達式?
/\A(\d{1,2}-\d{1,2}-\d{4})...?(\d{1,2}-\d{1,2}-\d{4})\z/
正如你所看到的,日期匹配組\d{1,2}-\d{1,2}-\d{4}
重複的。
是否有一種正則表達式原生或一般的ruby編程方式將這個組分配給一個變量,然後在正則表達式中使用它,而不是真正的組,給我一些像/\A<var>...?<var>\z/
?
謝謝!
我要檢查這個正則表達式一個字符串是否是格式日,兩個或三個點,日期乾紅寶石正則表達式?
/\A(\d{1,2}-\d{1,2}-\d{4})...?(\d{1,2}-\d{1,2}-\d{4})\z/
正如你所看到的,日期匹配組\d{1,2}-\d{1,2}-\d{4}
重複的。
是否有一種正則表達式原生或一般的ruby編程方式將這個組分配給一個變量,然後在正則表達式中使用它,而不是真正的組,給我一些像/\A<var>...?<var>\z/
?
謝謝!
正則表達式連接應該做的伎倆。
從討論here:
irb(main):001:0> re1 = re1 = /[\w]+/
=> /[\w]+/
irb(main):002:0> re2 = /[\d]+/
=> /[\d]+/
irb(main):003:0> re3 = /#{re1}[\s]+#{re2}/
=> /(?-mix:[\w]+)[\s]+(?-mix:[\d]+)/
irb(main):004:0> "Foo 123".match(re3).to_s
=> "Foo 123"
爲您的代碼具體爲:
irb(main):001:0> re1 = /\d{1,2}-\d{1,2}-\d{4}/
=> /\d{1,2}-\d{1,2}-\d{4}/
irb(main):002:0> re2 = /\A(#{re1})...?(#{re1})\z/
=> /\A((?-mix:\d{1,2}-\d{1,2}-\d{4}))...?((?-mix:\d{1,2}-\d{1,2}-\d{4}))\z/
..和然後根據需要使用RE2。
正則表達式連接ftw! – Epigene
您可以定期紅寶石做
date_regex = /\d{1,2}-\d{1,2}-\d{4}/
/\A(#{date_regex})...?(#{date_regex})\z/
你的意思是這樣的:http://stackoverflow.com/questions/2268421/ruby-regular-expression-using-variable-name? –
這一點太混亂了,Roney Michael的回答涵蓋了我所需要的。 – Epigene
檢查他的答案後,我仍然相信這些是重複的。此外,你說*兩個或三個點*,而Roney Michael使用'/ \ A(#{re1})...?(#{re1})\ z /'而不是'/ \ A(#{re1} )\ {2,3}(#{RE1})\ Z /'。 '.'匹配任何字符*和'\ .'匹配一個文字週期。我沒有想到在字符類中添加單個速記字符類(例如'\ w +'就足夠了''[\ w] +')。 –