regex(python)

正则表达式

量词:

  * 重复0次或更多次

  + 重复一次或更多次 

  ?重复0次或一次

  {n} 重复n次

  {n,} 重复n次或更多次

  {n,m} 重复n到m次

  贪心匹配(默认)

  惰性匹配: 量词 + ''?''

  .*?x 前面取任意长度字符直到取到x

字符:

  . 匹配除换行以外的任意字符

  \w 匹配字母或数字或下划线

  \d 匹配数字(digit)

  \s 匹配任意空白符(space)

  \n 匹配一个换行符

  \t 匹配一个制表符(TAB)

  \b 匹配一个单词的结尾

  ^ 匹配字符串的开始

  $ 匹配字符串的结尾

  \W 匹配非字母或数字或下划线

  \D 匹配非数字

  \S 匹配非空白符

  a|b 匹配字符a或者字符b

  ( ) 匹配括号内的表达式,也表示一个组(search)

  [...] 匹配字符组中的字符

  [^...] 匹配除字符组以外的所有字符

pyhton re模块

python正则

 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 # @Time    : 2018/7/8 9:27
 4 # @Author  : jackendoff
 5 # @Site    : 
 6 # @File    : text.py
 7 # @Software: PyCharm
 8 
 9 import re
10 
11 # find_str = re.findall('a', 'jai jack')  # 匹配所有,并显示所有
12 # print(find_str)
13 #
14 # search_str = re.search('a', 'jia jack')  # 匹配找到的第一个,并显示
15 # print(search_str)
16 # search_gp = search_str.group()
17 # print(search_gp)
18 #
19 # match_str = re.match('a', 'a bc')  # 匹配第一个
20 # print(match_str)
21 # match_gp = match_str.group()
22 # print(match_gp)
23 #
24 # find_str = re.findall('[a-z]\d', 'ji58a991')  # 匹配a-z和数字
25 # print(find_str)
26 # find_str = re.findall('([a-z])\d', 'ji58a991')  # 匹配a-z和数字
27 # print(find_str)
28 # find_str = re.findall('(?:[a-z])\d', 'ji58a991')  # ()代表‘组’在findall里优先显示  '?:'代表‘取消优先’
29 # print(find_str)
30 #
31 # search_str = re.search('([a-z])(\d)', 'jia123nfdj8684')  # 匹配a-z和数字 分组
32 # search_gpp = search_str.group()  # 显示匹配的数字和字母
33 # print(search_gpp)
34 # search_gp = search_str.group(1)  # 显示第一个组
35 # print(search_gp)
36 # search_gp = search_str.group(2)  # 显示第二个组
37 # print(search_gp)
38 
39 # sp_str = re.split('\d', 'jia4jfa5f78a')  # 依据数字分割
40 # print(sp_str)
41 # split_str = re.split('[a1]', 'jiafd54f1k')  # 先根据a分割,仔根据1分割
42 # print(split_str)
43 #
44 # sub_str = re.sub('[\d]', '0', 'jia123fd6', 2)  # 将数字替换成0,2表示只替换两个
45 # print(sub_str)
46 # sub_str = re.subn('[\d]', '0', 'jia123fd6')  # 将数字替换成0,返回一个元组(替换的结果,替换了多少次)
47 # print(sub_str)
48 
49 # obj = re.compile('\d{3}')  # 将正则表达式编译成一个正则对象(当表达式特别复杂的时候此对象可以多次使用)匹配三个数字
50 # obj_str = obj.search('jia123kill')  # 直接使用对象调用search进行匹配
51 # o_str = obj_str.group()
52 # print(o_str)
53 
54 # ret = re.finditer('\d', 'jia5fd55fs6f5')  # finditer返回一个存放匹配结果的迭代器(节省内存)
55 # print(ret)
56 # # for i in ret:
57 #     print(i.group())

猜你喜欢

转载自www.cnblogs.com/serpent/p/9282443.html