码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-10-05 12:26:14      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:val   add   验证   n3k   lse   hat   pre   lis   error:   

1、匹配一行文字中的所有开头的字母内容
>>> re.findall(r"^[a-zA-Z]+","a\nB\n1\nx\n",re.M)
[‘a‘, ‘B‘, ‘x‘]
>>> re.findall(r"^[a-z]+","a\nb\n1\n2\nx\n",re.M)

[‘a‘, ‘b‘, ‘x‘]

>>> re.findall(r"^[a-z]+","axx\nbee2\n1222xxx\n2xxx\nxxx3312xx\n",re.M)

[‘axx‘, ‘bee‘, ‘xxx‘]


2、匹配一行文字中的所有开头的数字内容
>>> re.findall(r"^\d+","a\n3\nB\n1\nx\n",re.M)
[‘3‘, ‘1‘]
>>> re.findall(r"^[0-9]+","a\n3\nB\n1\nx\n",re.M)
[‘3‘, ‘1‘]


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


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


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


6、匹配所有合法的python标识符
在python里,标识符有字母、数字、下划线组成。
>>> re.findall(r"\w|_+","a\n3kl4\n_\naB\n1\n \n x\n",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\n2019-04-15 12:00\n",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)‘,‘fewwk\home32‘).group()
‘\\home‘
>>> print(re.search(r‘(\\home)‘,‘fewwk\home32‘).group())
\home
>>> s ="d\home3fe\homed \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‘\b[a-zA-Z]+\b‘,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-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{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|1\d\d|2[0-4]\d|25[0-5])\.){3}([1-9]|[1-9]\d|1\d
\d|2[0-4]\d|25[0-5])$‘,"192.168.133.4").group()
‘192.168.133.4‘

 

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

标签:val   add   验证   n3k   lse   hat   pre   lis   error:   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!