10.正则表达式

# 1.检查一串数字是否是电话号码
# 2.检查一个字符串是否符合email
# 3.把一个文本里指定的单词替换为另一个单词
import re
# a = 'C|C++|Java|C#|Python|Javascript'
# print(a.index('Python') > -1)  # True
# print('Python' in a)           # True

# r=re.findall('Python',a)
# print(r)      # ['Python']
# if len(r) > 0:
#     print('字符串中包含Python')
# else:
#     print('No')


# b = 'C0C++7Java8C#9Python6Javascript'
# 查找所有的数字
# r=re.findall('\d',b)
# print(r)      # ['0', '7', '8', '9', '6']
# 查找所有的非数字
# r=re.findall('\D',b)
# print(r)      # ['C', 'C', '+', '+', 'J', 'a', 'v', 'a', 'C', '#', 'P', 'y', 't', 'h', 'o', 'n', 'J', 'a', 'v', 'a', 's', 'c', 'r', 'i', 'p', 't']


c = 'abc, acc, adc, aec, afc, ahc'
# 查找中间一个字母是c或f的单词
# r=re.findall('a[cf]c',c)
# print(r)      # ['acc', 'afc']
# 查找中间一个字母不是c并且也不是f的单词
# r=re.findall('a[^cf]c',c)
# print(r)      # ['abc', 'adc', 'aec', 'ahc']
# 查找中间一个字母在c-f的单词
# r=re.findall('a[c-f]c',c)
# print(r)      # ['acc', 'adc', 'aec', 'afc']


# 概括字符集
# \d \D
# \w 单词字符 \W
# \s 空白字符 \S
# .  匹配除换行符\n之外的所有字符
# e = 'python1111 java&6\t7\r8\n__php'
# r=re.findall('[0-9]',e) 
# print(r)  # ['1', '1', '1', '1', '6', '7', '8']
# r=re.findall('[^0-9]',e)
# print(r)  # ['p', 'y', 't', 'h', 'o', 'n', ' ', 'j', 'a', 'v', 'a', '&', '\t', '\r', '\n', '_', '_', 'p', 'h', 'p']
# r=re.findall('\w',e)  # \w等价于[A-Za-z0-9_]
# print(r)  # ['p', 'y', 't', 'h', 'o', 'n', '1', '1', '1', '1', 'j', 'a', 'v', 'a', '6', '7', '8', '_', '_', 'p', 'h', 'p']
# r=re.findall('\W',e)
# print(r)  # [' ', '&', '\t', '\r', '\n']
# r=re.findall('\s',e)
# print(r)  # [' ', '\t', '\r', '\n']

# 数量词 
# * 匹配0次或无限多次
# + 匹配1次或无限多次
# ? 匹配0次或1次
# 贪婪匹配
# r=re.findall('[a-z]{3,6}',e)
# print(r)  # ['python', 'java', 'php']
# 非贪婪匹配
# r=re.findall('[a-z]{3,6}?',e)
# print(r)  # ['pyt', 'hon', 'jav', 'php']

# f = 'pytho0python1pythonn2'
# r=re.findall('python*',f)
# print(r)  # ['pytho', 'python', 'pythonn']
# r=re.findall('python+',f)
# print(r)  # ['python', 'pythonn']
# r=re.findall('python?',f)
# print(r)  # ['pytho', 'python', 'python']

# 贪婪模式
# r=re.findall('python{1,2}',f)
# print(r)  # ['python', 'pythonn']
# 非贪婪模式
# r=re.findall('python{1,2}?',f)
# print(r)  # ['python', 'python']


# 边界匹配
# qq = '100001'
# 4~8位
# r=re.findall('\d{4,8}',qq)
# print(r)  # ['100001']
# qq2 = '100000001'
# r=re.findall('^\d{4,8}$',qq2)
# print(r)  # []
# r=re.findall('000',qq2)
# print(r)  # ['000', '000']
# r=re.findall('^000',qq2)
# print(r)  # []
# r=re.findall('000$',qq2)
# print(r)  # []

# 组 ()
# g = 'pythonpythonpythonpythonpythonJS'
# r=re.findall('(python){3}(JS)',g)
# print(r)  # ['python']

# lanage = 'PythonC#\nJavaPHP'
# 忽略字母大小写匹配
# r=re.findall('c#',lanage,re.I)
# print(r)  # ['C#']
# r=re.findall('c#.{1}',lanage,re.I | re.S)
# print(r)  # ['C#\n']

# 字符串替换
# lanage2 = 'PythonC#JavaC#PHPC#'
# r = re.sub('C#','Go',lanage2,1)
# print(r)  # PythonGoJavaC#PHPC#
# r = re.sub('C#','Go',lanage2,0)
# print(r)  # PythonGoJavaGoPHPGo

# lanage = lanage2.replace('C#','Go')
# print(lanage)  # PythonGoJavaGoPHPGo


# def convert(value):
#     # print(value)  # <_sre.SRE_Match object; span=(6, 8), match='C#'>
#                     # <_sre.SRE_Match object; span=(12, 14), match='C#'>
#                     # <_sre.SRE_Match object; span=(17, 19), match='C#'>
#     matched = value.group()
#     return '!!' + matched + '!!'

# r = re.sub('C#',convert,lanage2)
# print(r)  # Python!!C#!!Java!!C#!!PHP!!C#!!


s = 'A8C3721D86'
# def convert(value):
#     matched = value.group()
#     if int(matched) >= 6:
#         return '9'
#     else:
#         return '0'

# r = re.sub('\d',convert,s)
# print(r)  # A9C0900D99

# 从字符串首字母开始匹配
# r = re.match('\d',s)
# print(r)  # None

# 搜索整个字符串直,返回第一次找到的字符串
# r = re.search('\d',s)
# print(r)   # <_sre.SRE_Match object; span=(1, 2), match='8'>
# print(r.group())  # 8

# # 返回第一次查找到字符串的位置
# print(r.span())   # (1, 2)


# j = 'life is short,i use python'
# r = re.search('life(.*)python',j)
# print(r.group(0))   # life is short,i use python
# print(r.group(1))   #  is short,i use 

# r = re.findall('life(.*)python',j)
# print(r)   # [' is short,i use ']

h = 'life is short,i use python,i love python'
r = re.search('life(.*)python(.*)python',h)
# print(r.group(0))     # life is short,i use python,i love python
# print(r.group(1))     #  is short,i use
# print(r.group(2))     # ,i love
# print(r.group(0,1,2)) # ('life is short,i use python,i love python', ' is short,i use ', ',i love ')
# print(r.groups())     # (' is short,i use ', ',i love ')

 

转载于:https://www.cnblogs.com/zouke1220/p/8893853.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值