① python正则表达式匹配一个空格分隔的所有单词对
findall应该只能按着你的patten顺次往后找,所以出不来你想要的那种结果吧,倒不如直接用split分割然后写个循环输出你要的结果
import re
patt = r'\W+'
str1 = 'as jk jsd eqwe dsads'
reg = re.compile(patt)
res = reg.split(str1)
lst = []
for x in res:
if x:
length_flag = 0
else:
length_flag = 1
for x in range(0,len(res)-length_flag-1):
lst.append((res[x],res[x+1]))
print(lst)
输出结果就是你要的了
[('as', 'jk'), ('jk', 'jsd'), ('jsd', 'eqwe'), ('eqwe', 'dsads')]
我用的python3所以print带了括号,
另外我是个没啥基础刚自学的 方法可能非常笨拙
② 强烈推荐!Python 这个宝藏库 re 正则匹配
Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作。
在文本解析、复杂字符串分析和信息提取时是一个非常有用的工具 ,下面总结了 re 模块的常用方法。
d 匹配所有的十进制数字 0-9
D 匹配所有的非数字,包含下划线
s 匹配所有空白字符(空格、TAB等)
S 匹配所有非空白字符,包含下划线
w 匹配所有字母、汉字、数字 a-z A-Z 0-9
W 匹配所有非字母、汉字、数字,包含下划线
备注:符号.* 贪婪,符号.*? 非贪婪
[abc]:能匹配其中的单个字符
[a-z0-9]:能匹配指定范围的字符,可取反(在最前面加入^)
[2-9] [1-3]:能够做组合匹配
4.{ }:用于标记前面的字符出现的频率,有如下情况:
{n,m}:代表前面字符最少出现n次,最多出现m次
{n,}:代表前面字符最少出现n次,最多不受限制
{,m}:代表前面字符最多出现n次,最少不受限制
{n}:前面的字符必须出现n次
字符串中有反斜杠的,需要对反斜杠做转义
():分组字符,可以为匹配到的内容分组,快速获取到分组中的数据 在正则里面 "()" 代表的是分组的意思,一个括号代表一个分组,你只能匹配到 "()" 中的内容。
group:用于查看指定分组匹配到的内容
groups:返回一个元组,组内为所有匹配到的内容
groupdict:返回一个字典,包含分组的键值对,需要为分组命名
作用:可以将字符串匹配正则表达式的部分割开并返回一个列表
flags定义包括:
re.I:忽略大小写
re.L:表示特殊字符集 w, W, b, B, s, S 依赖于当前环境
re.M:多行模式
re.S:’.’并且包括换行符在内的任意字符(注意:’.’不包括换行符)
re.U:表示特殊字符集 w, W, b, B, d, D, s, S 依赖于 Unicode 字符属性数据库
在 Python 中使用正则表达式之前,先使用以下命令导入 re 模块
例如:
‘(d)(a)1’ 表示:匹配第一是数字,第二是字符a,第三 1 必须匹配第一个一样的数字重复一次,也就是被引用一次。
如 “9a9” 被匹配,但 “9a8” 不会被匹配,因为第三位的 1 必须是 9 才可以。
‘(d)(a)2’ 表示:匹配第一个是一个数字,第二个是a,第三个 2 必须是第二组()中匹配一样的。
如 “8aa” 被匹配,但 “8ab”,“7a7” 不会被匹配,第三位必须是第二组字符的复制版,也是就引用第二组正则的匹配内容。
③ 在python中,正则表达式元字符中的哪个用来匹配任意空白字符
当使用正则表达式时,可以使用元字符来匹配特定的字符模式。在Python中,可以使用`\s`来匹配任意空白字符,包括空格、制表符和换行符等。 例如,以下代码片段演示了如何使用正则表达式来匹配一个包含任意空白字符的字符串: ```python import re pattern = r'\s+' text = 'This is a string with multiple spaces and newlines.' matches = re.findall(pattern, text) print(matches) ``` 输出: ```csharp [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '] ``` 在上面的代码中,`\s+`表示匹配一个或多个空白字符。使用`re.findall()`函数查找所有匹配项,并将它们存储在`matches`变量中。然后,我们打印出所有匹配项。输出结果为包含多个空格和换行符的字符串行表。
④ python的正则表达式
1,正则表达式的一些内容
正则表达式主要是用来匹配文本中需要查找的内容,例如在一片文章中找出电话号码,就中国的来说11位纯数字(不说座机),则使用"d{11}" 意味匹配数字11次,就能准确的查找出文本中的电话号码. 还有就是在编写网络爬虫的时候需要提取很多超链接再次进行爬取,使用正则表达式就很方便.直接匹配http开头就行,当然也可以使用beautifulsoup的select方法.
看下面的程序看看正则表达提取文本中的邮箱:
w 匹配字母,数字,下划线
+ 匹配1次或者多次
re是正则表达式的工具包,工具包出错的话在anaconda的命令行输入"pip install re"安装,其他的工具包也是如此.
re.compile()中的r示意不是转义字符,也就是保持后面字符串原样,findall返回一个列表.下面还有一个版本的程序略有不同.
compile的另一个参数re.IGONORECASE(忽略大小写),还可以是re.DORALL,多行模式,具体功能也是模糊不清,不过在使用通配符 . 匹配的时候加上re.DOTALL参数能够匹配换行.如果希望忽略大小写和多行模式都开启可以使用re.compile(r'....',re.IGNORECASE|re.DOTALL) .
表达式使用( ),对匹配到的内容分为3组 也就是(w+)出现字母,数字,下划线一次或多次,这个分组就是下面使用match对象的grou()方法的时候的参数.不给参数和参数0都是得到整个匹配到的内容, 参数1得到第一个括号匹配到的内容,以此类推参数2和3,如果没有括号分组的话使用参数会出现错误.
search( )查找和正则式匹配的内容,只匹一次后面的那个找不到.返回一个match对象
w 匹配字母,数字,下划线
W 匹配字母,数字.下划线之外的所有字符
d 匹配数字
D 匹配非数字
s 匹配空格,制表符,换行符
S匹配除空格制表符,换行符之外的其他字符
[ .... ]定义自己的匹配,如[aeiouAEIOU ]匹配所有的元音字母,注意不是匹配单词.
{最少次数,最多次数},例如{3,9} 匹配3-9次,{ ,10}匹配0-10次. 默认为匹配最多次数(贪心匹配),非贪心模式在后面加上问号
? 可选 0次或者1次吧
+匹配1次或多次
*匹配0次或者多次
^ 判断开头 ^d 如果待匹配串是数字开头则返回第一个数字
$判断结尾 d$ 如果待匹配串是数字结尾则返回最后一个数字
. 通配符,匹配除换行之外的所有字符
d{11} 匹配数字11次
. * 匹配所有字符除 换行
[a-zA-Z0-9._%+-] 小写和大写字母、数字、句点、下划线、百分号、加号或短横
[a-zA-Z]{2,4} 匹配字母 2 - 4次
⑤ python中有没有函数可以一次性去除空格,换行符,制表符
1.利用正则表达式解决:
使用re.sub()函数,进行匹配替换:
importre
a='ILove Py thon '
b=re.sub('s','',a)
print(b)
2.解释:
(1)re.sub(pattern, repl, string,
count=0, flags=0)
(2)s 表示空白字符:[<空格>
fv]
3.拓展补充:有关正则表达式的常用符号,可以参考下面链接中的汇总图:
http://blog.csdn.net/michaelpp/article/details/9631979