当前位置: 首页 > news >正文

德宏傣族景颇族自治州网站建设_网站建设公司_漏洞修复_seo优化

建立企业的网站有哪几种方案,top模板wordpress,南昌做网站kaiu,营销网站建设哪里便宜#x1f338;re正则入门 正则表达式 (Regular Expression) 又称 RegEx, 是用来匹配字符的一种工具. 在一大串字符中寻找你需要的内容. 它常被用在很多方面, 比如网页爬虫, 文稿整理, 数据筛选等等 简单的匹配 正则表达式无非就是在做这么一回事. 在文字中找到特定的内容, 比如…re正则入门 正则表达式 (Regular Expression) 又称 RegEx, 是用来匹配字符的一种工具. 在一大串字符中寻找你需要的内容. 它常被用在很多方面, 比如网页爬虫, 文稿整理, 数据筛选等等 简单的匹配 正则表达式无非就是在做这么一回事. 在文字中找到特定的内容, 比如下面的内容. 我们在 dog runs to cat 这句话中寻找是否存在 cat 或者 bird. # matching string pattern1 cat pattern2 bird string dog runs to cat print(pattern1 in string) # True print(pattern2 in string) # False但是正则表达式绝非不止这样简单的匹配, 它还能做更加高级的内容. 要使用正则表达式, 首先需要调用一个 python 的内置模块 re. 然后我们重复上面的步骤, 不过这次使用正则. 可以看出, 如果 re.search() 找到了结果, 它会返回一个 match 的 object. 如果没有匹配到, 它会返回 None. 这个 re.search() 只是 re 中的一个功能, 之后会介绍其它的功能. import re# regular expression pattern1 cat pattern2 bird string dog runs to cat print(re.search(pattern1, string)) # matchcat print(re.search(pattern2, string)) # None灵活匹配 除了上面的简单匹配, 下面的内容才是正则的核心内容, 使用特殊的 pattern 来灵活匹配需要找的文字. 如果需要找到潜在的多个可能性文字, 我们可以使用 [] 将可能的字符囊括进来. 比如 [ab] 就说明我想要找的字符可以是 a 也可以是 b. 这里我们还需要注意的是, 建立一个正则的规则, 我们在 pattern 的 “前面需要加上一个 r 用来表示这是正则表达式, 而不是普通字符串. 通过下面这种形式, 如果字符串中出现run或者是ran”, 它都能找到. # multiple patterns (run or ran) ptn rr[au]n # start with r means raw string print(re.search(ptn, dog runs to cat)) # matchrun 同样, 中括号 [] 中还可以是以下这些或者是这些的组合. 比如 [A-Z] 表示的就是所有大写的英文字母. [0-9a-z] 表示可以是数字也可以是任何小写字母. print(re.search(rr[A-Z]n, dog runs to cat)) # None print(re.search(rr[a-z]n, dog runs to cat)) # matchrun print(re.search(rr[0-9]n, dog r2ns to cat)) # matchr2n print(re.search(rr[0-9a-z]n, dog runs to cat)) # matchrun 按类型匹配 除了自己定义规则, 还有很多匹配的规则时提前就给你定义好了的. 下面有一些特殊的匹配类型给大家先总结一下, 然后再上一些例子. \d : 任何数字\D : 不是数字\s : 任何 white space, 如 [\t\n\r\f\v]\S : 不是 white space\w : 任何大小写字母, 数字和 _ [a-zA-Z0-9_]\W : 不是 \w\b : 空白字符 (只在某个字的开头或结尾)\B : 空白字符 (不在某个字的开头或结尾)\ : 匹配 \. : 匹配任何字符 (除了 \n)^ : 匹配开头$ : 匹配结尾? : 前面的字符可有可无 下面就是具体的举例说明. # \d : decimal digit print(re.search(rr\dn, run r4n)) # matchr4n # \D : any non-decimal digit print(re.search(rr\Dn, run r4n)) # matchrun # \s : any white space [\t\n\r\f\v] print(re.search(rr\sn, r\nn r4n)) # matchr\nn # \S : opposite to \s, any non-white space print(re.search(rr\Sn, r\nn r4n)) # matchr4n # \w : [a-zA-Z0-9_] print(re.search(rr\wn, r\nn r4n)) # matchr4n # \W : opposite to \w print(re.search(rr\Wn, r\nn r4n)) # matchr\nn # \b : empty string (only at the start or end of the word) print(re.search(r\bruns\b, dog runs to cat)) # matchruns # \B : empty string (but not at the start or end of a word) print(re.search(r\B runs \B, dog runs to cat)) # match runs # \\ : match \ print(re.search(rruns\\, runs\ to me)) # matchruns\\ # . : match anything (except \n) print(re.search(rr.n, r[ns to me)) # matchr[n # ^ : match line beginning print(re.search(r^dog, dog runs to cat)) # matchdog # $ : match line ending print(re.search(rcat$, dog runs to cat)) # matchcat # ? : may or may not occur print(re.search(rMon(day)?, Monday)) # matchMonday print(re.search(rMon(day)?, Mon)) # matchMon 如果一个字符串有很多行, 我们想使用 ^ 形式来匹配行开头的字符, 如果用通常的形式是不成功的. 比如下面的 I 出现在第二行开头, 但是使用 r^I 却匹配不到第二行, 这时候, 我们要使用 另外一个参数, 让 re.search() 可以对每一行单独处理. 这个参数就是 flagsre.M, 或者这样写也行 flagsre.MULTILINE. string dog runs to cat. I run to dog.print(re.search(r^I, string)) # None print(re.search(r^I, string, flagsre.M)) # matchI 重复匹配 如果我们想让某个规律被重复使用, 在正则里面也是可以实现的, 而且实现的方式还有很多. 具体可以分为这三种: * : 重复零次或多次 : 重复一次或多次{n, m} : 重复 n 至 m 次{n} : 重复 n 次 举例如下: # * : occur 0 or more times print(re.search(rab*, a)) # matcha print(re.search(rab*, abbbbb)) # matchabbbbb# : occur 1 or more times print(re.search(rab, a)) # None print(re.search(rab, abbbbb)) # matchabbbbb# {n, m} : occur n to m times print(re.search(rab{2,10}, a)) # None print(re.search(rab{2,10}, abbbbb)) # matchabbbbb 分组 我们甚至可以为找到的内容分组, 使用 () 能轻松实现这件事. 通过分组, 我们能轻松定位所找到的内容. 比如在这个 (\d) 组里, 需要找到的是一些数字, 在 (.) 这个组里, 我们会找到 Date: 后面的所有内容. 当使用 match.group() 时, 他会返回所有组里的内容, 而如果给 .group(2) 里加一个数, 它就能定位你需要返回哪个组里的信息. match re.search(r(\d), Date: (.), ID: 021523, Date: Feb/12/2017) print(match.group()) # 021523, Date: Feb/12/2017 print(match.group(1)) # 021523 print(match.group(2)) # Date: Feb/12/2017 有时候, 组会很多, 光用数字可能比较难找到自己想要的组, 这时候, 如果有一个名字当做索引, 会是一件很容易的事. 我们字需要在括号的开头写上这样的形式 ?P名字 就给这个组定义了一个名字. 然后就能用这个名字找到这个组的内容. match re.search(r(?Pid\d), Date: (?Pdate.), ID: 021523, Date: Feb/12/2017) print(match.group(id)) # 021523 print(match.group(date)) # Date: Feb/12/2017 findall 前面我们说的都是只找到了最开始匹配上的一项而已, 如果需要找到全部的匹配项, 我们可以使用 findall 功能. 然后返回一个列表. 注意下面还有一个新的知识点, | 是 or 的意思, 要不是前者要不是后者. # findall print(re.findall(rr[ua]n, run ran ren)) # [run, ran]# | : or print(re.findall(r(run|ran), run ran ren)) # [run, ran] replace 我们还能通过正则表达式匹配上一些形式的字符串然后再替代掉这些字符串. 使用这种匹配 re.sub(), 将会比 python 自带的 string.replace() 要灵活多变. print(re.sub(rr[au]ns, catches, dog runs to cat)) # dog catches to cat split 再来我们 Python 中有个字符串的分割功能, 比如想获取一句话中所有的单词. 比如 a is b.split( ), 这样它就会产生一个列表来保存所有单词. 但是在正则中, 这种普通的分割也可以做的淋漓精致 print(re.split(r[,;\.], a;b,c.d;e)) # [a, b, c, d, e] compile 最后, 我们还能使用 compile 过后的正则, 来对这个正则重复使用. 先将正则 compile 进一个变量, 比如 compiled_re, 然后直接使用这个 compiled_re 来搜索. compiled_re re.compile(rr[ua]n) print(compiled_re.search(dog ran to cat)) # matchran 附正则学习路径
http://www.ihoyoo.com/news/4510.html

相关文章:

  • 淄博淘宝网站建设做自媒体的网站
  • 百度医疗网站建设seochan是什么意思
  • 新余做网站的怎么查看网站使用空间
  • 网站免费进入窗口软件有哪些个人简历自我介绍200字
  • 郑州大学现代远程教育 《网页设计与网站建设》个人主页wordpress手机主题下载
  • 商业空间设计公司seo服务外包报价
  • 企业网站赏析自己建设网站需要什么条件
  • 网站建设策划书总结asp做静态网站
  • 天津建筑信息网台州低价关键词优化
  • icp备案网站信息填写asp网站设置
  • 深圳四站合一网站建设电话ppt模板素材免费
  • 厦门创意网站建设重庆在线平台
  • 网站托管解决方案j江苏省建设工程招投标网站
  • 网站制作自学百度云深圳沙井做网站
  • 百度推广网站吸引力互联网站建设维护是做什么的
  • 网站建设招商如何在相关网站免费做宣传广告
  • 网站开发与设计实训svn教程图文详解 - 青岛网站建设
  • 贵州一帆建设工程有限公司网站中视频自媒体账号注册下载
  • 坪山网站制作数字选用平台介绍
  • 东莞企业网站哪家强南宁律师网站建设
  • 网站流量下降的原因网站建设前台后台教程
  • 射阳建设网站哪家好景观平台设计
  • 制作伪装网站栾城做网站
  • 扫黄除恶网站构造结构怎么做保定建行网站首页登录
  • asp.net 做g公司网站wordpress 中文后台
  • 个人主页网站html怎么做网站的浏览量
  • 靖江市住房和城乡建设局的网站免费库存管理软件哪个好
  • 网站提示危险网站小视频做网站怎么赚钱
  • 北京移动官方网站dede网站301怎么做
  • 网站服务器证书过期怎么解决简述商务网站建设