原子

来源:互联网 发布:怎么查询扣分情况淘宝 编辑:程序博客网 时间:2024/04/29 18:32

每个正则表达式中至少要包含一个原子,常见的原子有以下类:

- 普通字符

- ​非打印字符

- ​通用字符

- ​原子表

1.普通字符作为原子

​ 数字 ,大小写字母,下划线等都可以作为原子使用。

​ 如:

    import re    pattern="python"    string="http://www.python.com"    result1=re.search(pattern,string)    print(result1)

输出结果为:

    <_sre.SRE_Match object; span=(11, 17), match='python'>

在上面的程序中,我们使用正则表达式,所以导入re模块

接着我们设置正则表达式,将正则表达式的值赋予变量pattern,随后我们定义一串字符

然后使用re模块里的search()函数从string里面匹配对应的正则表达式

结构也成功的匹配到了”python”

2.非打印字符作为原子

非打印字符指的是一些在字符串里用于控制的符号,比如换行符等

    \n  用于匹配一个换行符    \t  用于匹配一个制表符

可以输入以下代码来实现换行符的匹配:

    import re    pattern="\n"            string='''abcd          efghigk'''          result1=re.search(pattern,string)           print(result1)

输出结果如下:

>>><_sre.SRE_Match object; span=(6, 7), match='\n'>

字符串变量string中包含一个换行符,所以进行换行符匹配,就可以匹配成功。

我们将换行符去掉后:

import repattern="\n"        string='''abcdefghigk'''    result1=re.search(pattern,string)       print(result1)

输出为:

>>>None

因为删掉了换行,所以无法匹配成功。

3.通用字符作为原子

常见的通用字符:

符号                 含义\w          匹配任意一个字母,数字或下划线\W          匹配除字母,数字和下划线以外的任意一个字符\d          匹配任意一个十进制数\D          匹配除十进制外的任意一个其他字符\s          匹配任意一个空白字符\S          匹配除空白字符以外的任意一个其他字符

我们可以使用”\w\dpython\w”对”python”字符进行匹配

字符后是一个字母,数字或下划线,字符前一个任意的十进制数,再前一位是一个字母,数字或下划线格式的字符串

如”99python”,”q8python_”都可以匹配成功

我们输入如下代码:

import repattern="\w\dpython\w"      string='jajdiqw98adj789pythony_shdia'   result1=re.search(pattern,string)       print(result1)

运行结果如下:

>>><_sre.SRE_Match object; span=(13, 22),match='89python_'>

我们可以看到匹配结果成功,match=’89python’

4.原子表

Python中,原子表由[]表示,比如[abc]就是一个原子表,这个原子表定义了3个原子,这三个原子地位平等

如我们定义正则表达式为:”[abc]py”

对应的源字符串是”gdbpyasd”

此时如果用re.search()函数进行匹配出来的结果就是

“bpy”,因此要py前一位是”a b c “子母中任意一个就可以匹配成功

 [^]表示除了括号里面的原子都可以匹配

比如“[^abc]py”能匹配“xpy”,但不能匹配”apy”

我们输入以下代码:

import repattern1="\w\dpython[abc]\w"pattern2="\w\dpython[^abc]\w"string='ashdjqh45h3pythonch'    result1=re.search(pattern,string)       print(result1)  print(result2)

运行结果如下:

>>><_sre.SRE_Match object; span=(9, 19), match='h3pythonch'>None

我们发现第一个匹配成功了,第二个失败,因为[^abc]使”c”无法被匹配

原创粉丝点击