php用正则表达抓取网页中文章(Python正则表达式转义(转义问题)的相关内容吗在本文为您仔细讲解)
优采云 发布时间: 2022-01-06 13:05php用正则表达抓取网页中文章(Python正则表达式转义(转义问题)的相关内容吗在本文为您仔细讲解)
想知道Python正则表达式的相关内容(转义问题)吗?在本文中,我将仔细讲解Python正则表达式转义的相关知识和一些代码示例。欢迎阅读和纠正我们。先说重点:Python、正则表达式、迁移大家一起学习。
先说一件比较尴尬的事情:我在编写虾米音乐预览下载器的时候遇到了一个问题。因为保存的文件都是以曲名命名的,所以遇到了“対芝/out border”等非法字符(呵呵)。哼哼说当你→_→Windows时保存标题会失败)。于是想到了迅雷的解决办法:将所有非法字符全部替换为下划线。
于是引入了正则表达式的使用。经过一番搜索,我写了一个这样的函数:
复制代码代码如下:
def sanitize_filename(文件名):
return re.sub('[\/:*?|]','_', 文件名)
最近发现这个函数有很多问题:
所以我认真看文件。
原创字符串
看了文档,发现Python正则表达式模块的转义是独立的。例如,要匹配一个反斜杠字符,您需要将参数写为:'\\\\':
Python 转义字符串:\\\\ 被转义为 \\
re模块获取传入的\\并解释为正则表达式,根据正则表达式转义规则转义为\
在这样繁琐的前提下,Raw String 是非常有用的,顾名思义(尾随反斜杠除外),不会被转义。所以匹配一个反斜杠字符可以写成 r'\\'。
所以上面的 sanitize_filename 改为:
复制代码代码如下:
def sanitize_filename(文件名):
return re.sub(r'[\\/:*?|]','_', 文件名)
正则表达式和匹配
所以还是认真的看一下re模块吧~以下是流水账,不耐烦查看。
Python 的正则表达式模块 re 中的主要对象其实就是这两个:
正则表达式 RegexObject
匹配对象
RegexObject 是一个正则表达式对象,match sub 等所有操作都属于它。由堆(模式,标志)生成。
复制代码代码如下:
>>> email_pattern = 桩(r'\w+@\w+\.\w+')
>>> email_pattern.findall('我的电子邮件是他的')
['','']
方法:
搜索从任何字符开始并返回 MatchObject 或 None
匹配从第一个字符开始并返回 MatchObject 或 None
split 返回由匹配项拆分的列表
findall 返回所有匹配项的列表
finditr 返回 MatchObject 的迭代器
sub 返回替换后的字符串
subn 返回(替换后的字符串,替换次数)
re模块中提供的re.sub、re.match、re.findall等函数,其实可以看作是避免直接创建正则表达式对象的捷径。并且因为 RegexObject 对象本身可以重复使用,所以这是它相对于这些快捷函数的优势。
MatchObject 是表示正则表达式匹配结果的匹配对象。由 RegexObject 的一些方法返回。匹配的对象始终为 True。另外,在正则表达式中获取组信息的方法也很多。
复制代码代码如下:
>>> for m in re.finditer(r'(\w+)@\w+\.\w+','My email is and his is'):
...打印'%d-%d %s %s'% (m.start(0), m.end(0), m.group(1), m.group (0))
...
12-23 美国广播公司
35-51 用户
参考
相关文章