正则表达式
| | | |
---|
通配符 | | 通配符 | |
. | 匹配除 “\n” 之外的任何单个字符 | | |
\d | 匹配一个数字字符。等价于 [0-9] | \D | 匹配一个非数字字符。等价于 [^0-9] |
\s | 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v] | \S | 匹配任何非空白字符。等价于 [^ \f\n\r\t\v] |
\w | 匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’ | \W | 匹配任何非单词字符。等价于 ‘[^A-Za-z0-9_]’ |
[] | 匹配[]内范围的字符 | [^…] | 匹配不包括字符… |
\b | 字符和空格的位置 ve\b i have a pencil | \B | 匹配不是单词开头或结束的位置 |
\d* + ? | \d* 可以匹配\b or 多个数字 \d+ 可以匹配多个数字(\d? 可以匹配\b or 单个数字 ) | | |
\w{m} | m>0 匹配m个字符 | \w{n,m} | n-m随意一个数值匹配对应个字符 |
| | | |
---|
装饰符 | | 装饰符 | |
re.I | 使匹配对大小写不敏感 | re.L | 做本地化识别(locale-aware)匹配 |
re.M | 多行匹配,影响 ^ 和 $ | re.S | 使 . 匹配包括换行在内的所有字符 |
re.U | 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B. | re.X | 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。 |
| |
---|
常用符号 | |
? | 匹配字符 = 0 或 =1 |
+ | 必须跟匹配字符 >= 1 |
* | 匹配字符 >= 0 |
^ | 开头元字符 |
$ | 结尾元字符 |
例子
print(re.match(r"<(\w*)><(\w+)>.*</\2></\1>", "<a><span>liujianhong</span></a>"))
print(re.match(r"<(?P<nn1>\w+)><(?P<nn2>\w+)>.*</(?P=nn2)></(?P=nn1)>", "<a><span>liujiang</span></a>"))
re 方法
import re
re_match = re.match("am", "i am a boy")
print(re_match)
re_search = re.search("boy", "i am a boy")
print(re_search.group())
phone = "987-12-12345678 # 这是一个电话啊号码"
re_sub = re.sub("#.*", "", phone)
new_phone = re.sub("\D", " ", re_sub)
print(f"新电话号码:{new_phone}")
def num_double(str_1):
num = int(str_1.group("value"))
return str(num * 2)
s = "123ssssdd456"
re_sub_repl = re.sub("(?P<value>\d+)", num_double, s)
print(f"double后的字符串:{re_sub_repl}")
pattern = re.compile(r'([a-z]+) (\w+)', re.I)
m = pattern.match('Hello World Wide Web')
print(m)
print(m.group(0))
print(m.span(0))
pattern = re.compile(r'\d+')
result1 = pattern.findall('runoob 123 google 456')
result2 = pattern.findall('run88oob123google456', 0, 10)
result3 = re.compile(r'\d+').findall('run88oob123google456', 0, 10)
print(result1, type(result1))
print(result2)
print(result3)
it = re.finditer(r"\d+", "12a32bc43jf3")
print(type(it))
for match in it:
print(match.group())
re_split = re.split('[^A-Za-z0-9]+', 'runoo44b, runoob, runoob.')
re_split3 = re.split('\W+', 'runoob, runoob, runoob.')
re_split2 = re.compile('\W+').split('runoob, runoob, runoob.', 2)
re_split1 = re.split('(\W+)', 'runoob, runoob, runoob.', 1)
print(re_split)
print(re_split3)
print(re_split2)
print(re_split1)