25正则表达式

Posted 丶默箫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了25正则表达式相关的知识,希望对你有一定的参考价值。

一 正则表达式

1 功能字符串的模糊匹配查询

"hello".find("yuan\\n  egon\\nalex")

2 元字符

re.findall(\'查找对象\',\'内容\')----匹配出所有条件的元素

元字符包括:. ^ $ * + ? { } [ ] | ( ) \\

. :除换行符以外的任意“一个”符号

ret=re.findall("李.","李杰,李刚,王超,占山")
print(ret)

^ :只匹配字符串开始的位置

import re
ret=re.findall("^李.","yuan李杰,李刚,王超,占山,李莲英")
print(ret)

$ :只匹配字符串最后一个(末尾)位置

import re
ret=re.findall("y..n$","yabn李杰,李刚,王超,占山,李莲英")
print(ret)

重复元字符

* :(0,无穷)

import re
ret=re.findall("131\\d*","1312312321,412341,131,32424,131234213423,123415234123324111,123412341234,12341234")
print(ret)

+ :(1,无穷)

import re
ret=re.findall("131\\d+","1312312321,412341,131,32424,131234213423,123415234123324111,123412341234,12341234")
print(ret)

? :(0,1)

import re
ret=re.findall("-?\\d+","131,41,-11,12,-4")
print(ret)

{} :指定次数

import re
ret=re.findall("\\d{18}","12312321,412341,32424,1234213423,123415234123324111,123412341234,12341234")
print(ret)

二 转义符

1 反斜杠后边跟元字符去除特殊功能,比如\\

2、反斜杠后边跟普通字符实现特殊功能,比如\\d

\\d  匹配任何十进制数;      它相当于类 [0-9]。
\\D  匹配任何非数字字符;    它相当于类 [^0-9]。
\\s  匹配任何空白字符;      它相当于类 [ \\t\\n\\r\\f\\v]。
\\S  匹配任何非空白字符;    它相当于类 [^ \\t\\n\\r\\f\\v]。
\\w  匹配任何字母数字字符;   它相当于类 [a-zA-Z0-9_]。
\\W  匹配任何非字母数字字符; 它相当于类 [^a-zA-Z0-9_]
\\b  匹配一个特殊字符边界,比如空格 ,&,#等

让我们看一下\\b的应用:

ret=re.findall(r\'I\\b\',\'I am LIST\')
print(ret)#[\'I\']

接下来我们试着匹配下“abc\\le”中的‘c\\l’:

import re

ret=re.findall(\'c\\l\',\'abc\\le\')
print(ret)#[]

ret=re.findall(\'c\\\\l\',\'abc\\le\')
print(ret)#[]

ret=re.findall(\'c\\\\\\\\l\',\'abc\\le\')
print(ret)#[]

ret=re.findall(r\'c\\\\l\',\'abc\\le\')
print(ret)#[]


# \\b是特殊符号所以,\'abc\\be\'前面需要加r
ret=re.findall(r\'c\\\\b\',r\'abc\\be\')
print(ret)#[]

分组()

m = re.findall(r\'(ad)+\', \'add\')
print(m)
 
ret=re.search(\'(?P<id>\\d{2})/(?P<name>\\w{3})\',\'23/com\')
print(ret.group())#23/com
print(ret.group(\'id\'))#23

元字符 |

ret=re.search(\'(ab)|\\d\',\'rabhdg8sd\')
print(ret.group())#ab

字符集【】

#--------------------------------------------字符集[]
ret=re.findall(\'a[bc]d\',\'acd\')
print(ret)#[\'acd\']
 
ret=re.findall(\'[a-z]\',\'acd\')
print(ret)#[\'a\', \'c\', \'d\']
 
ret=re.findall(\'[.*+]\',\'a.cd+\')
print(ret)#[\'.\', \'+\']
 
#在字符集里有功能的符号: - ^ \\
 
ret=re.findall(\'[1-9]\',\'45dha3\')
print(ret)#[\'4\', \'5\', \'3\']
 
ret=re.findall(\'[^ab]\',\'45bdha3\')
print(ret)#[\'4\', \'5\', \'d\', \'h\', \'3\']
 
ret=re.findall(\'[\\d]\',\'45bdha3\')
print(ret)#[\'4\', \'5\', \'3\']

 

以上是关于25正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

text 正则表达式片段

markdown 正则表达式模式片段

正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性

循环通过 python 正则表达式匹配

asp.net 使用正则表达式验证包含打开/关闭括号片段的属性字符串

正则表达式,匹配IP地址的,求大神帮我解释这行代码。^([1-9][1-9][0-9]1[0-