python正则group()的用法—正则提取括号内以及其他符号内内容

    python正则提取括号内以及其他符号内内容,我以前学过一点点正则,但是学的不深,用的正则也是最笨的正则方法,只会group(0).

   然而,我今天又看了下正则,发现正则的提取确实好用。无论爬虫还是文本分析都很方便。可以 解决特定的需求。

   举个例子,在以前我提取dsgs(gad)gdagda的时候,正常有两种方式:一个是字符串分割,分割几次就能找到想要的内容一般,第二是正则,但是我的是假的正则,我以前的正则是先匹配(gad)字符串,然后再写规则匹配gad的规则二次才能完成提取。但是如果字符串较大往往耗时费力,纯粹的体力活动。并且。我以前无论啥正则,都说group(0).我一直奇怪为啥一直group(0)呢.

   直到今天,我的疑惑才解开,才发现正则的强大之处。因为我今天要匹配处理的字符串的格式为:"2018-05-05 15:55:40 2班某某(1315426911)"这样一个字符串,我想提取括号里面的内容。经过各方百度,终于找到合适的方法。我先把代码和结果分享给大家:

import re
pattern=re.compile(r'\d*-\d*-\d*.*')
pattern2=re.compile(r'(\()(.*?)(\))')
pattern3=re.compile(r'\((.*)\)')
string="2018-05-05 15:55:40 2班某某(1315426911)"

str1=pattern.search(string)
print(str1.group(0))

str2=pattern2.search(string)
print('group(0):',str2.group(0))
print('group(1):',str2.group(1))
print('group(2):',str2.group(2))
print('group(3):',str2.group(3))

str3=pattern3.search(string)
print('group(0):',str3.group(0))
print('group(1):',str3.group(1))

输出的结果为:

2018-05-05 15:55:40 2班某某(1315426911)
group(0): (1315426911)
group(1): (
group(2): 1315426911
group(3): )
group(0): (1315426911)
group(1): 1315426911

对于第一个pattern就是正常匹配,不做详解。
对于第二个。就是把你想获得的内容用()封装起来。然后括号从左到右就是group(id)

python正则group()的用法—正则提取括号内以及其他符号内内容
第三个就不用说啦,因为只有一个括号,所以只有group(1).
值得注意的是注意真正的字符串括号"(“和”)"加斜杠转义。如果不想转义,还可以这么写:pattern3=re.compile(r’[ ( ] (.*)[ ) ]’)。

同样,在爬虫或者遇到其他文本分析问题时候可以采用同样方法。
其他的正则有很多大佬已经总结过,在这里就不说了(其实我也不会几个????????)。如果有错误,请指正!