当前位置:首页 » 编程语言 » 正则python

正则python

发布时间: 2022-01-11 15:30:19

1. python的正则表达式怎么用

在ipython中测试一下代码:(读入一个图片文件的地址字符串)
?

1
2
3
4
5
6
7
8
9
10
11
12

a = input("input a:\n")
print "the input method: ",a
b = raw_input("input b:\n")
print "the raw_input method: ",b

input a:
'/home/sunny/caffe-master/examples/images/cat.jpg'
the input method: /home/sunny/caffe-master/examples/images/cat.jpg

input b:
'/home/sunny/caffe-master/examples/images/cat.jpg'
the raw_input method: '/home/sunny/caffe-master/examples/images/cat.jpg'

另外,对于两种输入方式另一个直观区别就是input自带运算处理功能,也就是输入算式的话会直接输出结果,而raw_input会原汁原味(raw)地输出:

?

1
2
3
4

#! -*- coding:utf-8 -*-
print raw_input(u'测试raw_input:\n')

print input(u'测试input:\n')

2. python正则表达式是什么

python正则表达式是使用单个字符串来描述、匹配某个句法规则的字符串,常被用来检索、替换那些符合某个模式(规则)的文本。最初的正则表达式出现于理论计算机科学的自动控制理论和形式化语言理论中。

1950 年,数学家斯蒂芬·科尔·克莱尼利用称之为“正则集合”的数学符号来描述此模型。肯·汤普逊将此符号系统引入编辑器 QED,随后是 UNIX 上的编辑器 ed,并最终引入 grep。自此以后,正则表达式被广泛地应用于各种 UNIX 或类 UNIX 系统的工具中。目前,许多程序设计语言都支持利用正则表达式进行字符串操作。

正则表达式常用的特殊字符:

:将下一个字符标记为一个特殊字符、一个原义字符(Identity Escape,有 "^" "$" "(" ")" "*" "+" "{" "|" 共计12个)、一个向后引用(backreferences)或一个八进制转义符。例如“n”匹配字符“n”,“ ”匹配一个换行符,“\”匹配“”,“(”则匹配“(”。

^:匹配输入字符串的开始位置。如果设置了正则表达式的多行属性,“^”也可以匹配“ ”或“ ”之 后的位置。

[a-z]:字符范围,匹配指定范围内的任意字符。例如“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。

s:匹配任何空白字符,包括空格、制表符、换页符等,等效于“[f v]”。注意 Unicode 正则表达式 会匹配全角空格符。

3. python中正则问题


r'(.*) are (.*?) .*'

首先,这是一个字符串,前面的一个r表示字符串为非转义的原始字符串,让编译器忽略反斜杠,也就是忽略转义字符。但是这个字符串里没有反斜杠,所以这个r可有可无。


  1. (.*) 第一个匹配分组,.*代表匹配除换行符之外的所有字符

  2. (.*?)第二个匹配分组,.*?后面多个问号,代表非贪婪模式,也就是说只匹配符合条件的最少字符

  3. 后面的一个.* 没有括号包围,所以不是分组,匹配效果和第一个一样,但是不计入匹配结果中。


matchObj.group() 等同于matchObj.group(0),表示匹配到的完整文本字符

matchObj.group(1) 得到第一组匹配结果,也就是(.*)匹配到的

matchObj.group(2) 得到第二组匹配结果,也就是(.*?)匹配到的


因为只有匹配结果中只有两组,所以填3时会报错。






4. python 正则匹配^和$使用问题

^表示开始的意思。$表示结尾。match这个东西很奇怪。它是从开始做匹配的。 通常我会使用search而不是用match。 findall也是用search的机制。因为它是findall所以,就不可能用^作为字符串开头。因为字符串只有一个开头,但是有很多的”电话号码“。同样一个字符串也只有一个结尾 。你如果有结尾也不合适。

5. python中的正则表达式中的 "|"

Python中re.findall()函数是要求正则表达式在捕获第0组数据时,要在正则表达式上加小括号才能捕获.

也就是说如果你要获取整个正则表达式匹配的数据(你这里是电子邮箱地址),需要在正则表达式外面加小括号,

然后取第0捕获组的数据(你这里是[x[0] for x in zhengze]),

因为findall函数把每一个匹配的多个捕获组(就是你正则表达式中的小括号中)的数据放到一个元组里,所以要用for循环把第0捕获组的数据取出来.

具体程序改进如下

>>>zhengze=re.findall("([A-Za-z0-9]+@(163|qq|gmail).com)",txt)

>>>[x[0]forxinzhengze]

结果就是你要的邮箱列表了.

6. python正则表达式

group和groups是两个不同的函数。

一般,m.group(N) 返回第N组括号匹配的字符。
而m.group() == m.group(0) == 所有匹配的字符,与括号无关,这个是API规定的。

m.groups() 返回所有括号匹配的字符,以tuple格式。
m.groups() == (m.group(0), m.group(1), ...)

对你给的例子:

m = re.match("([abc])+", "abc")
你的+号在括号外面。括号最多匹配到一个字符,要么是a, 要么是c,这个python引擎匹配的是末尾的c。
而m.group() == m.group(0) 这个返回的是整个匹配的字符串"abc".

关于捕获型括号在正则表达式里的用法,参见相关文档。
参见http://..com/link?url=CltRBzI_-_jFl88a

7. python 正则

p = re.compile(r'<th class="subject new">(.*?)</th>',re.S)
不要继续问为什么, 去查python手册.
还有一个小提示,不建议用str作变量名, 因为str是python内建的一个类

8. 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!")

源代码(注意源代码的缩进)

9. python 正则表达式.* 是什么意思 详细解释

分开来说:
1、. 匹配任意除换行符“\n”外的字符;
2、*表示匹配前一个字符0次或无限次;

3、+或*后跟?表示非贪婪匹配,即尽可能少的匹配,如*?重复任意次,但尽可能少重复;
4、 .*? 表示匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。
如:a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab和ab。

热点内容
单片机android 发布:2024-09-20 09:07:24 浏览:760
如何提高三星a7安卓版本 发布:2024-09-20 08:42:35 浏览:660
如何更换服务器网站 发布:2024-09-20 08:42:34 浏览:308
子弹算法 发布:2024-09-20 08:41:55 浏览:285
手机版网易我的世界服务器推荐 发布:2024-09-20 08:41:52 浏览:814
安卓x7怎么边打游戏边看视频 发布:2024-09-20 08:41:52 浏览:159
sql数据库安全 发布:2024-09-20 08:31:32 浏览:91
苹果连接id服务器出错是怎么回事 发布:2024-09-20 08:01:07 浏览:504
编程键是什么 发布:2024-09-20 07:52:47 浏览:655
学考密码重置要求的证件是什么 发布:2024-09-20 07:19:46 浏览:479