正则表达式,python正则表达式

一、正则表达式主要元素

1)^  $ * ? + {3} {3,} {3,6} |

2) [] [^] [a-z] .

3) \s \S \w \W

4)[\u4E00-\u9FA5] () \d

先看看单个字符含义以及示例

字符 含义  
^ 以开头什么,如:^1[3456789]\d{9},以1开头第二位可以是3,4,5,6,7,8,9中任意一位,最后为9位数据  
$ 代表以什么结尾,如提起身份证以X为结尾的子字符串,(\d{17}X)$  
* 代表任意多个,可以没有,可以是n多个。  
正则默认是从右贪婪匹配,如:
abababb取出两个b之间的字符:.*a(.*)a.* 输出结果: 因为从右边匹配,第一个b和第二个b直接没有东西,(.*)表示任意字符任意多个。用:.*?b(.*)b.* 输出结果为:abab 加了问号不做贪婪匹配,是从左到右找最长的子串。从做左边第一个b开始到最后一个b结束中间的字符

  

正则表达式,python正则表达式_第1张图片
+ +号代表大于1个,比如abababb用 .*a(.*)a.* 匹配出来为空,想匹配至少中间有一个字符的,可以用:
.*b(.+)b.* 匹配结果为:ab
正则表达式,python正则表达式_第2张图片
{3} 代表等于3位,如:
abababb,匹配正则:
.*b(.{3})b. 匹配结果为:aba。
正则表达式,python正则表达式_第3张图片
{3,} 代表大于3位
abababb,匹配正则:
.*b(.{3,})b.* 匹配结果为:abab。
 
import re

line = "abababb"
matchObj = re.match(r'.*b(.{3,})b.*', line)

if matchObj:
    print("matchObj.group(1) : ", matchObj.group(1))
else:
    print("No match!!")


matchObj.group(1) :  abab

 

 

{3,6}

代表大于3位,小于6位  .*b(.{3,6})b.*  匹配结果为:abab。

 

.*b(.{5,6})b.* 搜索输出无

import re

line = "abababb"
matchObj = re.match(r'.*b(.{3,6})b.*', line)

if matchObj:
    print("matchObj.group(1) : ", matchObj.group(1))
else:
    print("No match!!")

matchObj.group(1) :  abab
matchObj = re.match(r'.*b(.{5,6})b.*', line)

if matchObj:
    print("matchObj.group(1) : ", matchObj.group(1))
else:
    print("No match!!")

No match!!

 

|

或的关系 如:^1[3456789]\d{9},以1开头第二位可以是3,4,5,6,7,8,9中任意一位,最后为9位数,

 

也可以用:^1[3|4|5|6|7|8|9]\d{9}

 

 

import re

line = "15110154567"
matchObj = re.match(r'(^1[3456789]\d{9})', line)

if matchObj:
    print("matchObj.group(1) : ", matchObj.group(1))
else:
    print("No match!!")
import re

line = "15110154567"
matchObj = re.match(r'(^1[3|4|5|6|7|8|9]\d{9})', line)
if matchObj:
    print("matchObj.group(1) : ", matchObj.group(1))
else:
    print("No match!!")

 

[] 代表【】中的任意一个如手机号:^1[3456789]\d{9},  
[^] 代表只要不是括号中的都满足条件。如手机号码为:
15110154567

用 ^1[^3456789]\d{9} 输出为无,

用 ^1[^3|4|5|6|7|8|9]\d{9} 输出为无,

import re

line = "15110154567"
matchObj = re.match(r'(^1[^3|4|5|6|7|8|9]\d{9})', line)
if matchObj:
    print("matchObj.group(1) : ", matchObj.group(1))
else:
    print("No match!!")
import re

line = "15110154567"
matchObj = re.match(r'(^1[^3456789]\d{9})', line)
if matchObj:
    print("matchObj.group(1) : ", matchObj.group(1))
else:
    print("No match!!")

 

[a-z] 代表区间。如[a-z],[A-Z],[0-9],[\u4E00-\u9FA5]汉字区间编码,如手机号:^1[3456789]\d{9},^1[3456789][0-9]{9}都可以,[0-9]相当于\d,也可以匹配字符,汉字等区间。
line = "15110154567"
matchObj = re.match(r'(^1[3456789][0-9]{9})', line)
if matchObj:
    print("matchObj.group(1) : ", matchObj.group(1))
else:
    print("No match!!")

 

. 代表任意字符,也可以是空,如示例:输出为空
import re

line = ""
matchObj = re.match(r'.*', line)
if matchObj:
    print("matchObj.group() : ", matchObj.group())

else:
    print("No match!!")

 

\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。注意 Unicode 正则表达式会匹配全角空格符。如右边输出结果为换行符,
import re

line = " " \
       "d1"
matchObj = re.match(r'.*?(\s+).*', line)
if matchObj:
    print("matchObj.group(1) : ", matchObj.group(1))

else:
    print("No match!!")
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。左右边输出结果为:dl。
import re

line = " " \
       "d1"
matchObj = re.match(r'.*?(\S+).*', line)
if matchObj:
    print("matchObj.group(1) : ", matchObj.group(1))

else:
    print("No match!!")
\w

\w 匹配非特殊字符,即a-z、A-Z、0-9、_、汉字,如右边用非贪婪匹配输出为:d1z

 


import re

line = "d1z~~~,,,^^^_ =+哈哈哈"
matchObj = re.match(r'.*?(\w+).*', line)
if matchObj:
    print("matchObj.group(1) : ", matchObj.group(1))

else:
    print("No match!!")


matchObj.group(1) :  d1z

 

\W

\W 匹配特殊字符,即非字母、非数字、非汉字、非_

用非贪婪匹配输出为:  ~~~,,,^^^

import re

line = "d1z~~~,,,^^^_ =+哈哈哈"
matchObj = re.match(r'.*?(\W+).*', line)
if matchObj:
    print("matchObj.group(1) : ", matchObj.group(1))

else:
    print("No match!!")

matchObj.group(1) :  ~~~,,,^^^

 

[\u4E00-\u9FA5] 匹配汉字 如右边输出结果:matchObj.group(1) :  哈哈哈

import re

line = "d1z~~~,,,^^^_ =+哈哈哈"
matchObj = re.match(r'.*?([\u4E00-\u9FA5]+).*', line)
if matchObj:
    print("matchObj.group(1) : ", matchObj.group(1))

else:
    print("No match!!")

 

() 正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。  
\d 代表数据,用\d 或者 [0-9]  

 综合上述:

手机号码正则:^1[3456789]\d{9}  以1+3,4,5,6,7,8,9的手机号。需要可以再加

座机号码正则:\d{3}[-|]{0,1}\d{8}  两种格式:010-87835711或者01087835711

邮箱正则:。。。

身份证号码正则:。。。

网站正则:。。。

写累了。。。。如有问题留言,看到第一时间回复。

 

你可能感兴趣的:(python,正则表达式,正则化,python)