干ruby regex的方法?

干ruby regex的方法?,ruby,regex,Ruby,Regex,我用这个正则表达式来检查字符串的格式是date,两个或三个点,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…?\z/ 谢谢 正则表达式串联应该可以做到这一点 从讨论中可以看出: 特别是对于您的代码: irb(

我用这个正则表达式来检查字符串的格式是date,两个或三个点,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…?\z/


谢谢

正则表达式串联应该可以做到这一点

从讨论中可以看出:


特别是对于您的代码:

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

date_regex = /\d{1,2}-\d{1,2}-\d{4}/
/\A(#{date_regex})...?(#{date_regex})\z/

你的意思是这样的吗:?那个太令人困惑了,罗尼·迈克尔的答案涵盖了我所需要的。在检查了他的答案后,我仍然相信这些都是重复的。还有,你说了两三个点,Roney Michael用了
/\A({re1}).?({re1})\z/
而不是
/\A({re1})\{2,3}({re1})\z/
<代码>匹配任何字符,
\。
匹配文字句点。而且我不想在字符类中添加单个速记字符类(例如,
[\w]+
\w+
足够时)。我无法判断问题是否重复,但点部分位于-
\。应该使用{2,3}
。正则表达式连接ftw!
date_regex = /\d{1,2}-\d{1,2}-\d{4}/
/\A(#{date_regex})...?(#{date_regex})\z/