子表达式

2017-12-14 10:38:43
linefo
906
最后编辑:linefo 于 2017-12-14 16:37:37

前言


我们之前说到,如 a{2,} 这个表达式,含义是匹配至少重复2次的a字符(即aa、aaa、.....)

那么,如果想找至少重复两次的ab字符(如abab、ababab、......),我们怎么实现呢?


子表达式


要实现上面的情况,我们需要用到使用 () 包裹起来的子表达式

【例子】(ab){2,}

(可能你看这个结果有些奇怪,我们后面再解释)


被 () 包括起来以后,会被视为独立的一个元素


子表达式的嵌套



这是子表达式的难点


我们想匹配这样一组数字 0.0.0.0 到 9.9.9.9

【例子】((\d.){3})(\d)



说到正则表达式最难的地方,应该是:
在能够考虑的情况中,你很容易构造出符合你查找要求的正则表达式,但因为你很难考虑到所有情况,所以很难保证正则表达式的完全准确



你看我这个例子,感觉嵌套很容易吧?其实我本来想匹配 0.0.0.0 到 255.255.255.255 的,但写了一会儿没写出来,就放弃了。

你可以试试!

我可以给搜索的文本你!

【文本】

0.0.0.0

1.19.19.19

19.1.19.19

19.19.1.19

19.19.19.1

1.192.192.192

192.1.192.192

192.192.1.192

192.192.192.1

15.214.122.25
209.6.199.245
200.155.204.79
100.22.43.126
36.41.132.45
245.126.215.106
95.159.25.119
63.222.49.82
54.83.133.55
57.11.195.123
8.36.10.29
105.13.154.57
209.172.56.226
239.134.215.23
31.157.118.26
197.224.225.47
84.149.242.0
249.89.225.246
148.251.34.13
39.227.139.41
156.221.182.48
3.231.197.28
79.94.220.214
74.213.223.176
30.203.30.9
133.211.99.186
242.30.19.180
114.222.32.227
22.63.133.48
152.150.155.248
148.181.195.72
130.199.106.124
186.225.87.227
41.246.99.129
153.104.220.135
47.183.56.138
217.33.236.42
0.105.80.118
37.91.232.17
58.179.205.167
39.16.191.189
229.13.201.125
142.38.235.34
26.117.69.210
181.72.13.1
230.127.215.113
239.41.42.45
26.78.21.28
28.51.212.49
73.74.58.223

255.255.255.255

306.306.306.306