gpt4 book ai didi

ruby - 干 ruby 正则表达式的方法?

转载 作者:数据小太阳 更新时间:2023-10-29 08:03:43 27 4
gpt4 key购买 nike

我有这个正则表达式来检查字符串的格式是否为date, two or three dots ,date

/\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。

关于ruby - 干 ruby 正则表达式的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29960473/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com