''' 搜索:regex101 在线正则匹配 https://regex101.com/ ''' ''' 数字:\d 非数字:\D 空字符串:\s 非空字符串:\S accsii码:\w 非accsii码:\W 所有字符:* 单个任意字符:. 0个或者一个:? 出现m-n次:{m,n} 一个或多个:+ 以什么开头:^ 以什么结尾:$ 或者:| ---> abc|bcd 匹配到的正则命名为name变量:{?P<name>正则} '''
''' 匹配'<h1>xxx</h1>' ''' # re.compile('<(?P<tagname>\w*)>.*</(?P=tagname)>') # re.match('<h1>xxx</h1>') #a = timeit.timeit(setup='''import re ; reg = re.compile('<(?P<tagname>\w*)>.*</(?P=tagname)>')''',stmt='''reg.match('<h1>xxx</h1>')''',number=1000000) #b = timeit.timeit(setup='''import re''',stmt='''re.match('<(?P<tagname>\w*)>.*</(?P=tagname)>','<h1>xxx</h1>')''',number=1000000) # print(a) # print(b) # 0.895464103505607 # 2.401233610585925 # 先写出正则表达式对象,然后匹配 效率高
''' 在:https://regex101.com/中 输入: <(?P<tagname>\w*)>.*</(?P=tagname)> <(?P<tagname>\w*)>(.*)</(?P=tagname)> <(?P<tagname>\w*)>.*</(?P=tagname)> <h1>xxx</h1> 想要什么结果,加括号 加括号进行分组 (<(?P<tagname>\w*)>(.*)</(?P=tagname)>) # 有三个组 '''
#先声明一个正则对象,通过正则对象去匹配,这样效率高 s = str("aa<h1>xxx</h1> 到的 的 <html>xxx</html>") # reg = re.compile(r"(<(?P<tagname>\w*)>(.*)</(?P=tagname)>)") #加个r解决转义问题 reg = re.compile(r"(<(?P<tagname>\w+)>(.*)</(?P=tagname)>)") #加个r解决转义问题 a=reg.match(s) # 以开头进行匹配,没有返回空 print(a) # None b=reg.search(s).groups() # 从开头进行匹配,然后匹配第二个,返回一个结果 g=reg.search(s).group("tagname") # 从开头进行匹配,然后匹配第二个,返回一个结果 # group()[1] print(b) #('<h1>xxx</h1>', 'h1', 'xxx') print(g) #h1 # reg.split() t = reg.findall(s) print(t) #[('<h1>xxx</h1>', 'h1', 'xxx'), ('<html>xxx</html>', 'html', 'xxx')] # reg.groups() # match search 的 # 利用 https://regex101.com/ 实时调试修改
x = '1one2two3three4four' reg1 = re.compile("\d") c = reg1.findall(x) # 查找正则 -- 匹配所有的 d = reg1.split(x) # 正则为分隔符 print(c) # ['1', '2', '3', '4'] print(d) # ['', 'one', 'two', 'three', 'four']