Young87

SmartCat's Blog

So happy to code my life!

游戏开发交流QQ群号60398951

当前位置:首页 >跨站数据

python RE模块 匹配字符串

一:匹配字符串

使用re模块,首先需要导入re模块

import re

匹配字符串这个模块我就介绍几三个方法,
match()函数 search()函数 findall()函数。接下来我分别来介绍和示例

1:match()函数

概括:match()方法用于从字符串开始处进行匹配,如果在开始的位置匹配成功则返回match对象,如活匹配失败则返回None
语法:re.match(pattern,string,[flags])
参数说明:

  • pattern 表示模式字符串,由要匹配的正则表达式转化而来。
  • string 表示要匹配的字符串。
  • flags 可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小。常用的标志如下图所示。
标志说明
A或者ASCLL对于\w\W\b\B\d\D\s和\S只进行ASCLL匹配
I或者IGNORECASE执行不区分字母大小的匹配
M或者MULTILINE将^和$用于包括整个字符串的开始和结束的没一行
S或者DOTALL使用(.)字符串匹配所有字符,包括换行符
X或者VERBOSE忽略模式字符串中的未转义的空格和注释

例子:匹配字符串是否已"mr_"开头的,不区分大小写

pattern = r'mr_\w+'  # 模式字符串
string = 'MR_SHOP mr_shop'  #要匹配的字符串
match = re.match(pattern,string,re.I)   # 匹配字符串不区分大小
print match
string1 = '项目名称MR_SHOP mr_shop'
match1 = re.match(pattern,string,re.I)   # 匹配字符串不区分大小
print match1
# <_sre.SRE_Match object at 0x0000000002BDA510>
# <_sre.SRE_Match object at 0x00000000030A36B0>

2:search()函数

概括:search()方法用于搜索整个字符串中搜索第一个匹配的值,如果匹配成功则返回macth对象,否则返回None
语法:re.search(pattern,string,[flags])
参数说明:

  • pattern 表示模式字符串,由要匹配的正则表达式转化而来。
  • string 表示要匹配的字符串。
  • flags 可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小。常用的标志和match()模块是一个表。

代码示例:

pattern = r'mr_\w+'  # 模式字符串
string = 'MR_SHOP mr_shop'  #要匹配的字符串
match = re.search(pattern,string,re.I)   # 匹配字符串不区分大小
print match
string1 = '项目名称MR_SHOP mr_shop'
match1 = re.search(pattern,string,re.I)   # 匹配字符串不区分大小
print match1
<_sre.SRE_Match object at 0x0000000002DAA510>
<_sre.SRE_Match object at 0x00000000032F36B0>

和上面的match()各人感觉没什么区别

3:findall()函数

概括:使用findall()方法用于在整个字符串中搜索所有符合正则表达式的字符串,并且以列表的形式返回,如果匹配成功则返回包含匹配结构的列表否则返回空列表。本人在开发时用的这个函数是比较多的。
语法:re.findall(pattern,string,[flags])
参数说明:

  • pattern 表示模式字符串,由要匹配的正则表达式转化而来。
  • string 表示要匹配的字符串。
  • flags 可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小。常用的标志和match()模块是一个表。
    直接上代码吧:
pattern = r'mr_\w+'  # 模式字符串
string = 'MR_SHOP mr_shop'  #要匹配的字符串
match = re.findall(pattern,string,re.I)   # 匹配字符串不区分大小
print match
string1 = '项目名称MR_SHOP mr_shop'
match1 = re.findall(pattern,string)   # 匹配字符串区分大小
print match1
# ['MR_SHOP', 'mr_shop']
# ['MR_SHOP', 'mr_shop']

在来一个简单的例子。

pattern = r'[1-9]{1,3}(\.[0-9]{1,3}){3}'  # 模式字符串
str1 = '127.0.0.1 192.168.1.66'
match = re.findall(pattern,str1)
print match
# ['.1', '.66']
pattern = r'([1-9]{1,3}(\.[0-9]{1,3}){3})'  # 模式字符串
str1 = '127.0.0.1 192.168.1.66'
match = re.findall(pattern,str1)
for i in match:
	print i[0]
# 127.0.0.1
# 192.168.1.66

这里就可以直接拿到IP地址了。
我是阿旺,表格也是纯手打,还不是很熟练,但是我会慢慢的去练习的。原本认为自己做不到的事最后却做成了,感觉真的很好!明天更新替换字符串

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: Linux 解决Deepin深度系统无法在root用户启动Google Chrome浏览器的问题

下一篇: 用Anaconda3搭建自己的TensorFlow环境

精华推荐