Ruby正则表达式组

用户名

我正在尝试匹配可能表示文档中某处范围的字符串,但无法完全弄清有关组的一件事...到目前为止,我有以下内容:

/(^-?[0-9]+)(\.\.+)(-?[0-9]+$)/

匹配1..10,-20 ... 20,-01234567890 ...- 999999999等。但是,我希望第二组($ 2)仅在中间是3位而不是2位时才有值。所以我希望它像:

=~ -01234567890...-999999999
$1 = -01234567890
$2 = ...
$3 = -999999999

=~ 1..10
$1 = 1
$2 = (empty because only two dots instead of 3)
$3 = 10

有什么方法可以指定此值,以便仅在确定值的情况下才进行分组?

car虫

您可以使用:

(^-?[0-9]+)(?:(?:[.]{,2})|([.]{,3}))(-?[0-9]+$)

如果结果是3,则只会将结果放入第二组.

解释:

  • ?: -非捕获组。
  • | - 或者

请注意,(?:[.]{,2})不捕获时([.]{,3})将捕获组。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章