加入收藏 | 设为首页 | 会员中心 | 我要投稿 惠州站长网 (https://www.0752zz.com.cn/)- 办公协同、云通信、物联设备、操作系统、高性能计算!
当前位置: 首页 > 建站 > 正文

Python正则表达式教程-常用文本处理技巧

发布时间:2019-10-31 00:04:52 所属栏目:建站 来源:数据大视界
导读:副标题#e# 介绍: 正则表达式用于识别模式(pattern)是否存在于给定的字符(字符串)序列中。它们有助于处理文本数据,这通常是涉及文本挖掘的数据科学项目的先决条件。您一定遇到过一些正则表达式的应用程序:它们在服务器端用于在注册过程中验证电子邮件地址

让我们看几个例子:

  1. # This checks for '' in the string instead of 't' due to the '' used  
  2. re.search(r'Backstail', 'Backstail').group() 
  3. 'Backstail' 
  4. # This treats 's' as an escape character because it lacks '' at the start of 's' 
  5. re.search(r'Backstail', 'Back tail').group() 
  6. 'Back lash' 
  • 重复次数

如果您要查找序列中的长模式,将变得非常乏味。幸运的是,该re模块使用以下特殊字符处理重复:

  • + -检查其左侧的一个或多个字符。
  1. re.search(r'Co+kie', 'Cooookie').group() 
  2. 'Cooookie' 
  •  * -检查左侧是否有零个或多个字符。
  1. # Checks for any occurrence of a or o or both in the given sequence 
  2. re.search(r'Ca*o*kie', 'Caokie').group() 
  3. 'Caokie' 
  •  ? -检查其左边是否为零或一个字符。
  1. # Checks for exactly zero or one occurrence of a or o or both in the given sequence 
  2. re.search(r'Colou?r', 'Color').group() 
  3. 'Color' 

但是,如果您要检查序列重复的确切数目怎么办?

例如,检查应用程序中电话号码的有效性。re模块还使用以下正则表达式很好地处理了此问题:

{x} -重复x次。

{x,} -重复至少x次或更多。

{x, y} -重复至少x次,但不超过y次。

  1. re.search(r'd{9,10}', '0987654321').group() 
  2. '0987654321' 

将+和*资格赛被认为是greedy。

  • 使用正则表达式进行分组和分组

假设,当您验证电子邮件地址并想要分别检查用户名和主机时。

这是group正则表达式功能派上用场的时候。它允许您拾取匹配文本的一部分。

由括号()界定的正则表达式模式的部分称为groups。括号不会更改表达式匹配的内容,而是在匹配的序列内形成组。group()在本教程的示例中,您一直都在使用该功能。match.group()像平常一样,没有任何参数的纯文本仍然是整个匹配文本。

  1. email_address = 'Please contact us at: support@datacamp.com' 
  2. match = re.search(r'([w.-]+)@([w.-]+)', ____________) 
  3. if _____: 
  4.  print(match.group()) # The whole matched text 
  5.  print(match.group(1)) # The username (group 1) 
  6.  print(match.group(2)) # The host (group 2) 

贪婪vs非贪婪匹配

(编辑:惠州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读