python正则表达式search
A. python正则表达式是什么
正则表达式(regex)用于探索给定字符串中的固定模式。我们想找到的模式可以是任何东西。可以创建类似于查找电子邮件或手机号码的模式。还可以创建查找以a开头、以z结尾的字符串的模式。
创建模式:
使用正则表达式时,首先需要学习的是如何创建模式。接下来将对一些最常用的模式进行逐一介绍。可以想到最简单的模式是一个简单的字符串。
pattern = r'times'
string = "It was the best of times, it was the worst of times."
print(len(re.findall(pattern,string)))
注意:
“正则表达式,又称规则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或re),是计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本”,那使用正则表达式的目的是什么呢?网络中只写了两句话:
1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”)。
2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。
大家可以简单的理解为两点:search和match。OK,了解了正则表达式的概念和作用,我们赶紧进入Python的学习吧!正则表达式不是Python独有的武器,但Python中的正则表达式无疑是最简单却又最强大的。
B. Python正则表达式的几种匹配方法
1.测试正则表达式是否匹配字符串的全部或部分
regex=ur"" #正则表达式
if re.search(regex, subject):
do_something()
else:
do_anotherthing()
2.测试正则表达式是否匹配整个字符串
regex=ur"/Z" #正则表达式末尾以/Z结束
if re.match(regex, subject):
do_something()
else:
do_anotherthing()
3.创建一个匹配对象,然后通过该对象获得匹配细节(Create an object with details about how the regex matches (part of) a string)
regex=ur"" #正则表达式
match = re.search(regex, subject)
if match:
# match start: match.start()
# match end (exclusive): atch.end()
# matched text: match.group()
do_something()
else:
do_anotherthing()
4.获取正则表达式所匹配的子串(Get the part of a string matched by the regex)
regex=ur"" #正则表达式
match = re.search(regex, subject)
if match:
result = match.group()
else:
result = ""
C. python正则表达式 如何找到指定字符后面完整的数字字符串
使用re模块的search函数,能过正则表达式查找,代码如下:
importre
reg=re.compile(r"(?<=指定字符)d+")
match=reg.search("待查找文本")
printmatch.group(0)
(?<=指定字符)此部分定位指定字符,查找但不包含
d+此部分为一个以上数字
这样就可以查找出数字字符串
D. Python正则表达式match和search区别,举个例子
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
re.search 扫描整个字符串并返回第一个成功的匹配。
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。
实例:
importre
line="Catsaresmarterthandogs";
matchObj=re.match(r'dogs',line,re.M|re.I)
ifmatchObj:
print("match-->matchObj.group():",matchObj.group())
else:
print("Nomatch!!")
matchObj=re.search(r'dogs',line,re.M|re.I)
ifmatchObj:
print("search-->matchObj.group():",matchObj.group()
else:
print("Nomatch!!")
运行结果:
Nomatch!!
search-->matchObj.group():dogs
E. python 怎么用正则表达式查找字符串
# encoding: UTF-8
import re
# 将正则表达式编译成Pattern对象
pattern = re.compile(r'(a|b)\1')
# 使用search()查找匹配的子串,不存在能匹配的子串时将返回None
# 这个例子中使用match()无法成功匹配
match = pattern.search('abaaab')
if match:
# 使用Match获得分组信息
print match.group()
F. python 正则表达式 search findall
因为当正则表达式中存在分组的时候,findall返回的结果是分组对应的内容,因为(,\d{3})没有匹配,所以返回的数组为空.
解决办法是加上小括号,象这样 ^(\d{1,3}(,\d{3})*)$ 就应该能返回数字了
G. python 正则表达式
按照你的要求编写的程序如下
importre
s='[有效信息]ab[abd]ab[abe]ab[abf]'
regex=r'[有效信息](ab[[a-z]+])+'
result=re.match(regex,s)
ifresult:
print(result.group())
else:
print("NoMatch!")
源代码(注意源代码的缩进)
H. python正则表达式疑问:为什么search到的某个分组得到tuple类型
因为你的程序中
g1=reg.search('a.b.c.d.e.z').groups(1)
写错了,应该是
g1=reg.search('a.b.c.d.e.z').group(1)
把groups改成group,去掉s就行了.
groups(1)会以元组形式返回所有捕获组的数据
group(1)会返回第一捕获组的数据
I. python正则表达式,找到所有匹配的字符串
m = re.search('hello$','hello world! hello')search()会扫描整个string查找匹配,
match()只有在开始0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none