代码改变世界

Python正则表达式

2019-03-19 18:14  janease  阅读(57)  评论(0)    收藏  举报
'''
1,正则表达:是一个特殊的字符序列
可以检视一个字符序列是否与我们设定的字符序列相匹配

快速检索文本、实现文本替换
如:
1,检查一串数字是否是电话号码
2,检测一个字符串是否是Emily
3,替换文本中的字符
import re

a = 'C|C++|java|Python'
r = re.findall('Python',a)
if len(r) > 0:
print('至少包含一个字符:'+ str(r))
else:
print('none')

元字符的应用
a = 'C3C++4java5Python'
# Python中用\d表示数字,\D非数字
# 提取出数字
r = re.findall('\D',a)
print(r)

字符集:
# 字符集
import re
s = 'abc,acc,adc,aec,arc,afc,ahc'
# 找出单词中间一个字母是c 或者 f 的单词
# 用a c定界,查找 c 或者 f 正则为,出现在[]中的关系为或的关系
r = re.findall('a[cf]c',s)
print(r)

# 用a c定界,查找 非 c 或者 f 正则为,用^符号表示非的关系
r = re.findall('a[^cf]c',s)
# 匹配c到f,用[c-f]表示
r = re.findall('a[c-f]c',s)

# 概括字符集
# \d \D \w(匹配单词包括数字字母) \W(匹配非单词)
# \s (匹配空白字符:空格 \n &)

# 数量词

a = 'python java php 123c++'
r = re.findall('[a-z]{3,6}',a)
print(r)

# 数量词
# *匹配0次或者无限多次 + 匹配1次或者无限多次 ?匹配0次或者1次
a = 'C3C++4java5Python6python8pythonnpytho'
# Python中用\d表示数字,\D非数字
# 提取出数字
r = re.findall('python?',a)
print(r)


# 边界匹配
qq = '597206422'
# ^从字符串的开始匹配,$从字符串的结束匹配
r = re.findall('^\d{4,9}$',qq)
print(r)

2,JSON(xml)

'''