re.search >> 找到一个满足的匹配就返回 , return a match object,or "None" (if nothing matched)
re.findall >> 找出所有满足的匹配 return a list (non-overlapped) 需要特别注意一下!!!
{m,n} >> 匹配 m 到 n 次
* >> 匹配任意多次
+ >> 匹配一次到多次
? >> 匹配 0 到 1 次
默认贪婪匹配,加上 ? 即可设置为 非贪婪匹配(找到一个满足的匹配就停止)
***** (),一个括号是一个组
group(0) 表示整个匹配结果
group(1),group(1).... 依次表示第一个组,第二个组
" " 引号里面是正则表达式
help to remember!!!
----------------------------------------------------------------------------------------------------------------
>>> import re
>>> s = "1234567890qwertyuiop"
>>> s1 = re.search("1(.*?)t",s) ## 1 和 t 都在组外
>>> print(s1.group(1)) ## 输出组内的匹配项
234567890qwer
>>> print(s1.group(0)) ## 输出整个匹配项
1234567890qwert
>>> s2 = re.search("(1.*?t)",s) ## 1 和 t 都在组内,这时group(0) 和 group(1) 的内容是一样的
>>> print(s2.group(1))
1234567890qwert
>>> print(s2.group(0))
1234567890qwert
-----------------------------------------------------------------------------------------------------------
"""""important"""""
re.findall() --->>> return a list of groups
###--- 几点说明 ---###################################################################################################
# 1.返回的是一个包括所有匹配项的列表 #
# 2.一个括号称为一个组,允许多个括号嵌套,此时返回由各个组组成的列表,这些组由元组结合在一起,顺序按---左括号出现的顺序来排序--- #
# 例如下面,(l|r)是group(1),((l|r) .*?)是group(2),这里面是group(1)的括号先出现,故返回结果中,group(1)内容在group(0)前面 #
#####################################################################################################################
正则表达式: exp = '\(\(((l|r) .*?)\)\)'
示例代码: s1 = re.findall('\(\(((l|r) .*?)\)\)',s)
>>> import re
>>> s = "(show 376 ((b) -52.4984 30.8257 -0.0941 0.4318) ((l 1) 0 0x9 -51.0324 6.5581 -0 0 -9.521 53 (v h 120) (s 8000 1 1 128675) (f l 2) (c 0 32 504 0 1 537 6 25 0 0 299)) ((l 2) 2 0x1 -47.9899 4.3658 -0.0214 0.1033 17.566 29 (v h 120) (s 6888.94 0.899697 1 115841) (c 3 197 331 0 1 532 117 78 0 0 202)) ((l 3) 17 0x1 -44.4745 11.9725 -0.2098 0.2034 132.978 -69 (v h 120) (s 7234.96 0.940978 1 115494) (f l 2) (c 10 189 327 0 1 527 111 82 0 0 202)) ((l 4) 8 0x1 -47.0965 -3.4085 0.0107 0.2333 85.468 -42 (v h 120) (s 7594.49 0.968087 1 115974) (f l 2) (c 6 178 337 0 1 522 141 68 0 0 229)) ((l 5) 13 0x1 -48.6188 23.6623 -0.1822 0.2851 112.297 5 (v h 60) (s 6012.06 0.845349 1 114428) (f l 2) (c 2 206 307 0 1 517 114 75 0 0 192)) ((l 6) 1 0x1 -43.2933 12.9607 -0.0025 0.0037 41.611 -90 (v h 120) (s 3573.24 0.840354 1 115463) (f l 2) (c 6 251 254 0 1 512 43 71 0 0 173)) ((l 7) 6 0x1 -37.11 5.1769 -0.133 0.2408 121.472 -38 (v h 120) (s 2938.21 0.946459 1 114748) (f l 2) (c 0 262 244 0 1 507 45 70 0 0 171)) ((l 8) 15 0x1 -41.6891 20.4953 -0.0591 0.1642 110.386 37 (v h 60) (s 2442.17 0.91697 1 115160) (f l 2) (c 10 262 229 0 1 502 36 79 0 0 202)) ((l 9) 11 0x1 -13.0331 -25.1061 -0.0032 0.0003 125.022 -31 (v h 180) (s 7049.49 0.976843 1 113956) (f l 2) (c 3 254 239 0 1 497 26 55 0 1 227)) ((l 10) 14 0x1 -15.7679 29.7544 -0.0498 0.0007 -179.81 47 (v h 120) (s 6335.21 0.859784 1 113709) (f l 2) (c 3 268 220 0 1 492 45 61 0 1 216)) ((l 11) 7 0x1 -15.5242 7.0468 -0.3452 0.1277 162.378 62 (v h 180) (s 4952.28 0.953224 1 113492) (f l 5) (c 3 301 182 0 1 487 34 69 0 3 189)) ((r 1) 0 0x9 28.9272 5.4564 -0.0002 0 161.396 23 (v h 180) (s 7813.61 1 1 116965) (f r 11) (c 1 103 431 0 1 536 17 23 0 0 245)) ((r 2) 2 0x1 0.6069 3.0087 -0 -0 163.966 -90 (v h 180) (s 7219.18 0.899697 1 115305) (f r 7) (c 0 199 316 0 1 516 52 80 0 23 180)) ((r 3) 11 0x1 -13.132 30.2895 -0.3472 -0.0221 -172.97 33 -17.2635 29.8288 (v h 180) (s 5081.86 0.976843 1 113725) (f r 9) (c 0 229 266 0 1 506 51 83 1 27 167)) ((r 4) 1 0x1 -0.0622 -10.6877 -0.0186 0.024 142.463 13 (v h 180) (s 4439.25 0.840354 1 115512) (f r 9) (c 2 275 218 0 1 496 35 64 0 23 193)) ((r 5) 15 0x1 -23.9141 14.292 -0.071 0.0178 161.355 -60 (v h 120) (s 3496.04 0.91697 1 115302) (f r 9) (c 0 286 199 0 1 486 40 97 0 22 205)) ((r 6) 6 0x1 -27.457 4.4374 -0.318 0.1382 156.009 -78 (v h 180) (s 4018.04 0.946459 1 115040) (f r 7) (c 1 260 214 0 1 476 38 116 0 28 192)) ((r 7) 8 0x1 -33.2984 26.5522 -0.3636 0.0883 165.311 -54 (v h 120) (s 4160.86 0.968087 1 114060) (f r 9) (c 0 243 222 0 1 466 46 88 0 20 179)) ((r 8) 13 0x1 -38.1046 -2.6899 -0.3862 0.2562 151.662 -10 (v h 120) (s 3706.87 0.845349 1 114090) (f r 9) (c 0 252 193 0 1 456 41 82 1 23 197)) ((r 9) 7 0x1001 -51.6558 29.6457 -0.0355 0.0143 158.289 0 (v h 60) (s 4475.44 0.953224 1 114254) (f r 11) (c 16 232 194 0 1 446 44 101 1 18 136)) ((r 10) 14 0x1 -43.8766 6.8427 -0.2579 0.2572 135.831 -90 (v h 120) (s 4106.59 0.859784 1 113672) (f r 11) (c 15 244 176 0 1 436 53 97 0 17 174)) ((r 11) 17 0x1 -47.1725 15.4019 -0.1529 0.1406 145.21 -90 (v h 60) (s 3314.79 0.940978 1 114084) (f r 9) (c 13 248 164 0 1 426 27 98 0 19 178)))"
>>> s1 = re.findall('\(\(((l|r) .*?)\)\)',s)
>>> print(s1)
输出结果:
[('l 1) 0 0x9 -51.0324 6.5581 -0 0 -9.521 53 (v h 120) (s 8000 1 1 128675) (f l 2) (c 0 32 504 0 1 537 6 25 0 0 299', 'l'), ('l 2) 2 0x1 -47.9899 4.3658 -0.0214 0.1033 17.566 29 (v h 120) (s 6888.94 0.899697 1 115841) (c 3 197 331 0 1 532 117 78 0 0 202', 'l'), ('l 3) 17 0x1 -44.4745 11.9725 -0.2098 0.2034 132.978 -69 (v h 120) (s 7234.96 0.940978 1 115494) (f l 2) (c 10 189 327 0 1 527 111 82 0 0 202', 'l'), ('l 4) 8 0x1 -47.0965 -3.4085 0.0107 0.2333 85.468 -42 (v h 120) (s 7594.49 0.968087 1 115974) (f l 2) (c 6 178 337 0 1 522 141 68 0 0 229', 'l'), ('l 5) 13 0x1 -48.6188 23.6623 -0.1822 0.2851 112.297 5 (v h 60) (s 6012.06 0.845349 1 114428) (f l 2) (c 2 206 307 0 1 517 114 75 0 0 192', 'l'), ('l 6) 1 0x1 -43.2933 12.9607 -0.0025 0.0037 41.611 -90 (v h 120) (s 3573.24 0.840354 1 115463) (f l 2) (c 6 251 254 0 1 512 43 71 0 0 173', 'l'), ('l 7) 6 0x1 -37.11 5.1769 -0.133 0.2408 121.472 -38 (v h 120) (s 2938.21 0.946459 1 114748) (f l 2) (c 0 262 244 0 1 507 45 70 0 0 171', 'l'), ('l 8) 15 0x1 -41.6891 20.4953 -0.0591 0.1642 110.386 37 (v h 60) (s 2442.17 0.91697 1 115160) (f l 2) (c 10 262 229 0 1 502 36 79 0 0 202', 'l'), ('l 9) 11 0x1 -13.0331 -25.1061 -0.0032 0.0003 125.022 -31 (v h 180) (s 7049.49 0.976843 1 113956) (f l 2) (c 3 254 239 0 1 497 26 55 0 1 227', 'l'), ('l 10) 14 0x1 -15.7679 29.7544 -0.0498 0.0007 -179.81 47 (v h 120) (s 6335.21 0.859784 1 113709) (f l 2) (c 3 268 220 0 1 492 45 61 0 1 216', 'l'), ('l 11) 7 0x1 -15.5242 7.0468 -0.3452 0.1277 162.378 62 (v h 180) (s 4952.28 0.953224 1 113492) (f l 5) (c 3 301 182 0 1 487 34 69 0 3 189', 'l'), ('r 1) 0 0x9 28.9272 5.4564 -0.0002 0 161.396 23 (v h 180) (s 7813.61 1 1 116965) (f r 11) (c 1 103 431 0 1 536 17 23 0 0 245', 'r'), ('r 2) 2 0x1 0.6069 3.0087 -0 -0 163.966 -90 (v h 180) (s 7219.18 0.899697 1 115305) (f r 7) (c 0 199 316 0 1 516 52 80 0 23 180', 'r'), ('r 3) 11 0x1 -13.132 30.2895 -0.3472 -0.0221 -172.97 33 -17.2635 29.8288 (v h 180) (s 5081.86 0.976843 1 113725) (f r 9) (c 0 229 266 0 1 506 51 83 1 27 167', 'r'), ('r 4) 1 0x1 -0.0622 -10.6877 -0.0186 0.024 142.463 13 (v h 180) (s 4439.25 0.840354 1 115512) (f r 9) (c 2 275 218 0 1 496 35 64 0 23 193', 'r'), ('r 5) 15 0x1 -23.9141 14.292 -0.071 0.0178 161.355 -60 (v h 120) (s 3496.04 0.91697 1 115302) (f r 9) (c 0 286 199 0 1 486 40 97 0 22 205', 'r'), ('r 6) 6 0x1 -27.457 4.4374 -0.318 0.1382 156.009 -78 (v h 180) (s 4018.04 0.946459 1 115040) (f r 7) (c 1 260 214 0 1 476 38 116 0 28 192', 'r'), ('r 7) 8 0x1 -33.2984 26.5522 -0.3636 0.0883 165.311 -54 (v h 120) (s 4160.86 0.968087 1 114060) (f r 9) (c 0 243 222 0 1 466 46 88 0 20 179', 'r'), ('r 8) 13 0x1 -38.1046 -2.6899 -0.3862 0.2562 151.662 -10 (v h 120) (s 3706.87 0.845349 1 114090) (f r 9) (c 0 252 193 0 1 456 41 82 1 23 197', 'r'), ('r 9) 7 0x1001 -51.6558 29.6457 -0.0355 0.0143 158.289 0 (v h 60) (s 4475.44 0.953224 1 114254) (f r 11) (c 16 232 194 0 1 446 44 101 1 18 136', 'r'), ('r 10) 14 0x1 -43.8766 6.8427 -0.2579 0.2572 135.831 -90 (v h 120) (s 4106.59 0.859784 1 113672) (f r 11) (c 15 244 176 0 1 436 53 97 0 17 174', 'r'), ('r 11) 17 0x1 -47.1725 15.4019 -0.1529 0.1406 145.21 -90 (v h 60) (s 3314.79 0.940978 1 114084) (f r 9) (c 13 248 164 0 1 426 27 98 0 19 178', 'r')]
-----------------------------------------------------------------------------------------------------------------------------------------
另外
python的切片处理,只顾头不顾尾
list[start:end:step]
从start开始,取到end-1
*****tips:
list[0:3] 只能取到list[0],list[1],list[2], list[3]取不到 ( 0 可以省略,和list[:3] 效果一样)
list[::3] 从 索引0 开始,到结尾,对所有的内容 以步长为 3 进行截取
第一个元素的索引是0
最后一个元素的索引是-1
list[:] 表示复制list这个列表