我们已经提到了怎么重复单个字符(直接在字符后面加上限定符就行了);但如果想要重复多个字符又该怎么办?
你可以用小括号来指定**子表达式**(也叫做**分组**),然后你就可以指定这个子表达式的重复次数了,你也可以对子表达式进行其它一些操作(后面会有介绍)。
>[info](\\d{1,3}\\.){3}\\d{1,3}
是一个简单的IP地址匹配表达式。要理解这个表达式,请按下列顺序分析它:
\\d{1,3}匹配1到3位的数字,(\\d{1,3}\.){3}匹配三位数字加上一个英文句号(这个整体也就是这个**分组**)重复3次,最后再加上一个一到三位的数字(\\d{1,3})。
不幸的是,它也将匹配*256.300.888.999*这种不可能存在的IP地址。
如果能使用算术比较的话,或许能简单地解决这个问题,但是正则表达式中并不提供关于数学的任何功能,所以只能使用冗长的分组,
选择字符类来描述一个正确的IP地址:
((2\[0-4\]\\d|25\[0-5\]|\[01\]?\\d\\d?)\\.){3}(2\[0-4\]\\d|25\[0-5\]|\[01\]?\\d\\d?)。