正则表达式在python中的应用

import re

a = 'background-image: url("www.ashdjhs.com"); background-position: 150px 160px;'

a1 = re.findall(r"background-image: url\(\"(.*?)\"\); background-position: (.*?)px (.*?)px;", a)

print(a1)

# re.match()尝试从字符串的起始位置匹配一个模式,若不是起始位置匹配成功的话则返回none,只匹配开头,第二个ab是不会被匹配到的
a2 = re.match('ab', 'abac123abcde').group()
a3 = re.match('abc', 'abac123acde')
# print(a2)
# print(a3)

# re.search()是从左到右开始匹配,,只要找到一个匹配结果就返回,没有则返回none
a4 = re.search('ab', 'acab123abcde').group()
# print(a4)

# re.sub(),pattern指匹配模式,repl指替换的字符串,string指被匹配的字符串,count指替换的最大次数,0表示替换所有的匹配,
# 删除字符串中的注释
a6 = re.sub(pattern=r'#.*$', repl='', string='188-1438-4778 # 这是一个电话号码!!!', count=0)
a7 = re.sub(pattern=r'aaa', repl='啊啊', string='188-1438-4778 aaa # 这aaa是一个电aaa话号码!!!', count=1)
# print(a6)
# print(a7)
# 删除非数字(-)的字符串
a8 = re.sub(r'\D', '', '188-1438-4778 # 这是一个电话号码!!!')
# print(a8)

a9 = 'src="test.jpg" width="60px" height="80px"'
# a10没加?为贪婪模式,会一直匹配到结束
a10 = re.findall(r'src=\".*\"', a9)
# a11加了?为非贪模式,指匹配到第一个双引号就结束
a11 = re.findall(r'src=\".*?\"', a9)
# a12加了()是代表设置为组,只获取组内元素
a12 = re.findall(r'src=\"(.*?)\"', a9)
# print(a10)
# print(a11)
# print(a12)

a13 = 'ashdkjashd@qq.com asdk1321@163.com 4546464@.com  asdasd4654@195.com SADASD46464@163.com asdasdg@sohu.com'
a14 = re.findall(r'[a-z0-9A-Z]+@[0-9a-z]{2,}\.com', a13)
# print(a14)

a15 = 'one12two2three3four4'
a16 = re.split(r'\d+', a15)
# print(a16)

a17 = "i said, hello world!"
aa = re.findall(r'(\w+) (\w+)', a17)
aaa = re.findall(r'\w+', a17)
a18 = re.sub('(\w+) (\w+)', r'\2 \1', a17)
print(aa)
print(aaa)
print(a18)
def func(m):
    return m.group(1).title() + ' ' + m.group(2).title()
a19 = re.sub('(\w+) (\w+)', func, a17)
# print(a19)

# 匹配不以abc开头的单词
a20 = 'abclsjdlaskjd  kfjasklabcjlkdas kjasdkjaslkdj  5456465wsdasdas aaakjhdskjfhs kljsjdlsjwoiabc abcsakdjasldjabc'
a21 = re.findall(r'\b(?!abc)\w+', a20)
# print(a21)
# 匹配不以abc结尾的单词
a22 = re.findall(r'\w+(?<!abc)\b', a20)
# print(a22)
# 匹配不包含abc的单词
a23 = re.findall(r'(\b(a(?!bc)|\w(?!abc))((?<!abc)\S(?!abc))*\b)', a20)
# print(a23)
# print(a23[0])
# print(a23[0][0])
# for i in a23:
    # print(i[0])

# 匹配包含abc的单词
a24 = re.findall(r'\b\w*(?=abc)\w*\b', a20)
# print(a24)

 

上一篇:在Visual Studio 2013中安装Mysql for EntityFramework


下一篇:Spring - 案例511:xml&注解 混合开发 整合MyBatis