php用正则表达抓取网页中文章(Python正则表达式转义(转义问题)的相关内容吗在本文为您仔细讲解)

优采云 发布时间: 2022-01-06 13:05

  php用正则表达抓取网页中文章(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 用户

  参考

  相关文章

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线