正则题--什么时候才能到200+

1、匹配一行文字中的所有开头的字母内容
>>> re.findall(r"^[a-zA-Z]+","a B 1 x ",re.M)
['a', 'B', 'x']
>>> re.findall(r"^[a-z]+","a b 1 2 x ",re.M)

['a', 'b', 'x']

>>> re.findall(r"^[a-z]+","axx bee2 1222xxx 2xxx xxx3312xx ",re.M)

['axx', 'bee', 'xxx']


2、匹配一行文字中的所有开头的数字内容
>>> re.findall(r"^d+","a 3 B 1 x ",re.M)
['3', '1']
>>> re.findall(r"^[0-9]+","a 3 B 1 x ",re.M)
['3', '1']


3、匹配一行文字中的所有开头的数字内容或数字内容
>>> re.findall(r"^w+","a 3 B 1 x ",re.M)
['a', '3', 'B', '1', 'x']
>>> re.findall(r"^[a-zA-Z0-9]+","a 3 B 1 x ",re.M)
['a', '3', 'B', '1', 'x']


4、 只匹配包含字母和数字的行
>>> re.findall(r"[a-zA-Z0-9]+","2b3a 3 B 1 x ",re.M)
['2b3a', '3', 'B', '1', 'x']
>>> re.findall(r"w+","a 3kl4 aB 1 x ",re.M)
['a', '3kl4', 'aB', '1', 'x']


5、写一个正则表达式,使其能同时识别下面所有的字符串:'bat',
'bit', 'but', 'hat', 'hit', 'hut‘
>>> re.findall(r"b.t|h.t","bat bit but hat hit hut ",re.M)
['bat', 'bit', 'but', 'hat', 'hit', 'hut']


6、匹配所有合法的python标识符
在python里,标识符有字母、数字、下划线组成。
>>> re.findall(r"w|_+","a 3kl4 _ aB 1 x ",re.M)
['a', '3', 'k', 'l', '4', '_', 'a', 'B', '1', 'x']


7、提取每行中完整的年月日和时间字段
>>> re.findall(r"d+","2019-04-16 11:32")
['2019', '04', '16', '11', '32']
>>> re.findall(r"d+","2019-04-16 11:32 2019-04-15 12:00 ",re.M)
['2019', '04', '16', '11', '32', '2019', '04', '15', '12', '00']
>>> re.findall(r"(d+-d+)","2019-04-16 11:32:26")
['2019-04']
>>> re.findall(r"(d+-d+-d+)","2019-04-16 11:32:26")
['2019-04-16']
>>> re.findall(r"(d+-d+-d+) (d+):","2019-04-16 11:32:26")
[('2019-04-16', '11')]
>>> re.findall(r"(d+-d+-d+) (d+):(d+)","2019-04-16 11:32:26")
[('2019-04-16', '11', '32')]
>>> re.findall(r"(d+-d+-d+) (d+):(d+):(d+)","2019-04-16 11:32:26")
[('2019-04-16', '11', '32', '26')]
>>> re.findall(r"d+-d+-d+ d+:d+:d+","2019-04-16 11:32:26")
['2019-04-16 11:32:26']
AttributeError: 'list' object has no attribute 'group'
>>> re.search(r"d+-d+-d+ d+:d+:d+","2019-04-16 11:32:26").group()
'2019-04-16 11:32:26'


8、将每行中的电子邮件地址替换为你自己的电子邮件地址
>>> re.findall(r'w+@w+.com|cn','mail:465@qq.com')
['465@qq.com']
>>> re.sub(r'w+@w+.com|cn','XXXX@163.com','465@qq.com')
'XXXX@163.com'


9、匹配home关键字:
>>> re.search(r'(\home)','fewwkhome32').group()
'\home'
>>> print(re.search(r'(\home)','fewwkhome32').group())
home
>>> s ="dhome3fehomed home "
>>> for i in re.findall(r'\home',s):
... print(i)
...
home
home
home


进阶练习
1、使用正则提取出字符串中的单词
>>> s= 'I am a good boy!'
>>> re.findall(r'w+',s)
['I', 'am', 'a', 'good', 'boy']
>>> s= 'I am a 12 years old boy!'#字符串中包含数字和字母的情况
>>> re.findall(r'[a-zA-Z]+',s)
['I', 'am', 'a', 'years', 'old', 'boy']


2、使用正则表达式匹配合法的邮件地址:

import re
re_email = re.compile(r'^[a-zA-Z.]+@[a-zA-Z0-9]+.[a-zA-Z]{3}$')
def is_valid_email(addr):
    if re_email.match(addr):
        print("True")
        m = re.match(r'^([a-zA-Z.0-9]+)@[a-zA-Z0-9]+.[a-zA-Z]{3}$',addr)
        print(m.group(1))

    else :
        print('False')

is_valid_email('someone@gmail.com')

3、国际域名格式如下:
域名由各国文字的特定字符集、英文字母、数字及“-”(即连字符或减号)任意组
合而成, 但开头及结尾均不能含有“-”,“-”不能连续出现。域名中字母不分大
小写。域名最长可达60个字节(包括后缀.com、.net、.org等)。
import re

print(re.search(r"^[A-Za-zd]+([-_.][A-Za-zd]+)*@([A-Za-zd]+[-.])+[A-Za-zd]{2,4}$","a32b@qq.com").group())


4、提取字符串中合法的超链接地址
比如:s = '<a href="http://www.gloryroad.cn">光荣之路官网</a>'
要求,给出的正则表达式能兼顾所有链接地址。
>>> re.findall(r'http://w+.',s)
['http://www.']
>>> re.findall(r'http://w+.w+',s)
['http://www.gloryroad']
>>> re.findall(r'http://w+.w+.',s)
['http://www.gloryroad.']
>>> re.findall(r'http://w+.w+.w+',s)
['http://www.gloryroad.cn']
>>> re.findall(r'http[s]{0,1}://w+.w+.w+',s)
['http://www.gloryroad.cn']


5、统计文件中单词个数
>>> s="I am a good boy!"
>>> re.findall(r"w+",s)
['I', 'am', 'a', 'good', 'boy']
>>> len(re.findall(r"w+",s))
5


6、写一个函数,其中用正则验证密码的强度
密码字符包括:小写字母、大写字母、数字、符号
>>> re.search(r"^(?:([a-z])|([A-Z])|([0-9])|(.)){6,}|(.)+$","^ 8SA&kkk").group()

'^ 8SA&kkk'

7、匹配ip的正则表达式:
>>> re.search(r'^(([1-9]|[1-9]d|1dd|2[0-4]d|25[0-5]).){3}([1-9]|[1-9]d|1d
d|2[0-4]d|25[0-5])$',"192.168.133.4").group()
'192.168.133.4'

原文地址:https://www.cnblogs.com/wenm1128/p/10716606.html