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正则表达式的主要内容,如果未能解决你的问题,请参考以下文章
正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性