我正在尝试匹配可能表示文档中某处范围的字符串,但无法完全弄清有关组的一件事...到目前为止,我有以下内容:
/(^-?[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
有什么方法可以指定此值,以便仅在确定值的情况下才进行分组?
您可以使用:
(^-?[0-9]+)(?:(?:[.]{,2})|([.]{,3}))(-?[0-9]+$)
如果结果是3,则只会将结果放入第二组.
。
解释:
?:
-非捕获组。 |
- 或者请注意,(?:[.]{,2})
不捕获时([.]{,3})
将捕获组。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句