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

网站建设与管理收获学校网

网站建设与管理收获,学校网,有什么专业做心理的网站,怎么做可以直播的网站正则表达式是一种小型、高度专业化的编程语言。适用于任何语言#xff0c;在 Python 中通过 re 模块实现。正则模式被编译成一系列的字节码#xff0c;然后由 C 语言编写的匹配引擎执行。给字符串模糊匹配 正则用于匹配字符串#xff0c;匹配字符串可以完全匹配和模糊匹配在 Python 中通过 re 模块实现。正则模式被编译成一系列的字节码然后由 C 语言编写的匹配引擎执行。给字符串模糊匹配 正则用于匹配字符串匹配字符串可以完全匹配和模糊匹配 **完全匹配**普通字符大多数字符和字母都和自身匹配 re.findall(rose, lialrosetom)**模糊匹配**元字符不需要完全匹配即能匹配成功 . ^ $ * ? { } [ ] | ( ) \ 元字符 正则可以使用普通字符进行完全匹配也可以使用元字符进行模糊匹配。正则表达式中所有元字符 . ^ $ * ? { } [ ] | ( ) \ 。 通配符 正则中用一个点.来表示通配符它可以匹配除换行符\n以外任何字符。一个点只能匹配一个字符 re.findall(s..x, abshuxijd) [shux]开头结尾 正则中尖角号^用于匹配一行字符串的开头$用于匹配一行字符串的结尾。必须以匹配对象开头或结尾才能匹配成功否则匹配失败。 re.findall(r^hello,\d,hello,123) [hello,123]re.findall(r^hello,\d,hi hello,123) []re.findall(rhello,\d$,hello,123) [hello,123]re.findall(rhello,\d$,hello,123s) []重复匹配 不管是点.还是数字匹配\d都只能匹配一个字符或数字。要想匹配多个就要进行重复匹配正则中能够重复匹配的元字符有* ? {}。 元字符描述元字符描述*对星号前面的子表达式匹配重复 [0 ∞] 次对加号前面的子表达式匹配重复 [1 ∞] 次对问号前面的子表达式匹配重复 [01] 次非贪婪模式{n}精确匹配 n 个前子表达式 **星号 *** 星号*可以对它前面的子表达式重复 0 次 或多次。 # 对 abc 的 c 重复 0 到多次即可匹配 ab、abc、abcc、abc...re.findall(rabc*,ab456abc123abccc) [ab, abc, abccc]加号 加号可以对它前面的子表达式重复 1 次或多次。 re.findall(rabc,ab456abc123abccc) # 即至少有有一个 c [abc, abccc]问号 问号可以对它前面的子表达式重复 0 次或 1 次。 re.findall(rabc?,ab456abc123abccc) [ab, abc, abc]大括号 {} 大括号{}可以对它前面的子表达式精确重复几次它有多重模式 {n} 对它前面的子表达式至少重复 n 次{m, n} 对它前面的子表达式重复 m 到 n 次{0, ∞} 相当于星号*{1, ∞} 相当于加号{0, 1} 相当于问号 re.findall(rabc{3},ab456abc123abccc) # c 重复 3 次匹配到 abccc [abccc]re.findall(rabc{1,3},ab456abc123abccc) # 匹配 abc、abccc [abc, abccc]re.findall(rabc{1,3},abc456abcc123abccc) [abc, abcc, abccc]管道符 管道符|表示或a|b 表示 a 或 b。 re.findall(ra|b, abc) [a, b]re.findall(rka|b, kahbc) [ka, b]re.findall(rka|b, kahc) [ka]re.findall(rka|b, ka|bhc) [ka, b]字符集 在正则表达式中中括号[ ] 表示一个字符集它用来表示一组字符。字符集中除 - ^ \ 有特殊意义外其他元字符都是普通字符。 [mm] 匹配 m 或 n[^mn] 匹配除 m、n 以外的所有字符 re.findall(rabc[de],abcd123abce567) [abcd, abce]re.findall(r[^de],abcd123abce567) [abc, 123abc, 567]横杠 - 字符集中横杠-用来表示范围[a-z] 表示 a - z 任意一个字母。 re.findall(rb[a-z], bs) [bs]re.findall(r[1-9],12ab45) [1, 2, 4, 5]re.findall(r[1-9],12ab45) [12, 45]re.findall(r[A-Za-z0-9],12abCD45) [12abCD45] re.findall(r\d[A-Za-z0-9]\.[a-z],982561639qq.com) [982561639qq.com]尖角号 ^ 尖角号^表示非[^\d] 除数字以外。 re.findall(r[^\d],abc123def) [abc, def]re.findall(b[^a-z]*, bs213) # s 没有匹配上匹配停止 [b]转义字符 \ 反斜杠\表示对某个字符转义可以把普通字符变成特殊字符如\d re.findall(r[\d],abc123def456) [123, 456]转义字符 转义字符在元字符中是一个比较特殊的存在在字符集里面、外面都有特殊意义。 反斜杠后面跟元字符去除特殊功能如\.其中这个点变成了普通的点反斜杠后面跟普通字符实现特殊功能如\d匹配任何十进制数 转义字符 普通字符 特殊字符 \d匹配任意十进制数相当于 [0-9]\D匹配任何非数字字符相当于 [^0-9]\s匹配任意空白字符相当于 [\t\n\r\f\v]\S匹配任意非空白字符相当于 [^\t\n\r\f\v]\w匹配任意字母数字字符相当于 [a-zA-Z0-9_]\W匹配任意非字母数字字符相当于 [^a-zA-Z0-9_]\b匹配任意一个特殊字符边界如空格、、# 等 \b 在 Python 中本身是有特殊意义的在匹配时需要给它转义或者加上原生字符串 r re.findall(rabc\b,abc123) # \b 匹配的是特殊字符边界abc 后面没有空格匹配失败 []re.findall(abc\\b,abc 123) # abc 后面有空格匹配成功 [abc]re.findall(rabc\b,abc 123) [abc]re.findall(rabc\b,abc#123) [abc]给其他字符加上转义字符时 import rere.findall(c\l,abc\le) []re.findall(c\\l,abc\le) []re.findall(c\\\\l,abc\le) [c\\l]re.findall(rc\\l,abc\le) [c\\l]\w 和 \s 用法示例 re.findall(r\w, 12shdk34_) # 匹配数字字母以及下划线加上匹配多个 [1, 2, s, h, d, k, 3, 4, _]re.findall(r\w, 12shdk34_) [12shdk34_] re.findall(r\s, 12 shdk 34_) # 匹配空白字符 [ , ]**Tips**在使用正则的时候尽量带上原生字符串 r可以避免不必要的麻烦。 转义字符 元字符 普通字符 给元字符加上转义字符元字符就失去了原有的意义变成了一个普通字符。 re.findall(rwww*, www*) [www]re.findall(rwww\*, www*) # 要想把 * 也匹配上就要给 * 转义 [www*]贪婪与非贪婪 关于重复匹配正则表达式默认是按照贪婪匹配的方式去匹配即在符合条件的情况下尽可能多的去匹配。而非贪婪匹配恰好与之相反。 贪婪匹配 re.findall(rabc*,abc123abcc) # 尽可能多的匹配* 的范围是 0 或 多次它取了 多 次 [abc, abcc]re.findall(r.,htmltitleHello World/title/html) [htmltitleHello World/title/html] 启用非贪婪模式只需在表示重复的元字符后面加上一个问号即可 re.findall(rabc*?,abc123abcc) # 尽可能少的匹配* 的范围是 0 或 多次它取了 0 次 [ab, ab]re.findall(r.?,htmltitleHello World/title/html) [html, title, /title, /html]在贪婪匹配下.*会尽可能多的匹配字符因此它把 123456 匹配了只留下了一个 7 给 \d最后得到的内容是 7 content Hello 1234567 World_This a Regex Demopattern re.compile(r^He.*(\d).*Demo$)re.findall(pattern,content) [7]有时贪婪匹配匹配的结果并不是我们想要的那样给我们带来了很大不便这时我们就要使用非贪婪匹配比较合适 pattern re.compile(r^He.*?(\d).*Demo$)re.findall(pattern,content) [1234567]修饰符 正则可以包含一些可选标志修饰符来控制匹配模式修饰符被指定为一个可选的标志。 常见修饰符| 修饰符 | 描述 | 修饰符 | 描述 | | ------ | -------------------------------------------------- | ------ | ---------------------------------------------------------- | | re.I | 使匹配对大小不敏感 | re.L | 使本地化识别locale-aware匹配 | | re.M | 多行匹配影响 ^ 和 $ | re.S | 使 . 匹配包含换行在内的所有字符即点.换行符也能匹配 | | re.U | 根据 Unicode 字符集解析字符。影响 \w \W \b 和 \B | reX | 通过给与你更灵活的格式以便你将正则表达式写的更易理解 | 我们知道点.可以匹配除换行符以外的所有字符但是当遇到换行时就会引发匹配失败 import re content Hello 1234567 World_This is a Regex Demo result re.match(r^He.*?(\d).*?Demo$,content) print(result.group(1))--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) ipython-input-2-bd9088917b1a in module()3 is a Regex Demo4 result re.match(r^He.*?(\d).*?Demo$,content) ---- 5 print(result.group(1))AttributeError: NoneType object has no attribute group之所以会报没有 group 方法是因为我们使用了点.匹配任意字符但是不能匹配换行符也就匹配失败。而我们又调用了 group 方法针对这种情况我们只需在 match 方法最后添加一个 re.S 的修饰符即可以便使点.能匹配换行 result re.match(r^He.*?(\d).*?Demo$,content,re.S)1234567分组 分组优先匹配组里面的内容也只显示括号里面的。要想全部显示可以在括号前面加上?:进行去优先级 re.findall(www\.(baidu|163)\.com, www.baidu.com) [baidu]# 在分组前面加上 ?: 表示去组的优先级re.findall(www\.(?:baidu|163)\.com, www.baidu.com) [www.baidu.com] re.findall((abc), abcabcabc) [abc]re.findall((?:abc), abcabcabc) [abcabcabc]分组后的结果通过 group() 方法即可取到 re.match(r^th.*?(\d).*?(\d),this is 123456 regex 567) _sre.SRE_Match object; span(0, 24), matchthis is 123456 regex 567re.match(r^th.*?(\d).*?(\d),this is 123456 regex 567).group() this is 123456 regex 567re.match(r^th.*?(\d).*?(\d),this is 123456 regex 567).group(1) 123456re.match(r^th.*?(\d).*?(\d),this is 123456 regex 567).group(2) 567另一种分组方式?P组名通过组名取值当匹配的结果有很多时可以这样取值 # 另一种分组方式?P组名 通过组名取值当匹配的结果有很多时可以这样取值 re.search((?Pname[a-z]), rose18john20tom22) _sre.SRE_Match object; span(0, 4), matchrose re.search((?Pname[a-z]), rose18john20tom22).group() rose re.search((?Pname[a-z]), rose18john20tom22).group(name) # 名字分组为 name rose re.search((?Pname[a-z])(?Page\d), rose18john20tom22).group(age) # 名字分组为 age 18 re 模块常用方法 match 方法 match(patter, string, flags0) 方法从字符串开始位置匹配如果匹配成功则返回匹配位置以及 match 对象否则返回 None。 第一个参数为正则表达式第二个参数为待匹配的字符串。 re.match(\d, rose56)re.match(\d, 12rose56) _sre.SRE_Match object; span(0, 1), match1re.match(\d, 12rose56).group() 1search 方法 search(pattern, string, flags0)方法扫描整个字符串搜索正则表达式模式匹配的第一个位置并返回 match 对象。如果没有与之匹配的则返回 None。正则表达式模式即为匹配规则需要用原生字符串来写避免不必要的麻烦。 第一个参数为正则表达式第二个参数为待匹配的字符串。 re.search(rabc, abc123abc) _sre.SRE_Match object; span(0, 3), matchabc # 返回第一个匹配结果的位置以及 match 对象使用 group() 方法可以拿到匹配结果 result re.search(rabc, abc123abc)result.group() abc使用 span() 方法可以拿到匹配结果范围 result re.search(rabc, abc123abc)result.span() (0, 3)split 方法 split(pattern, string, maxsplit0, flags0)分割字符串返回结果存储到列表中maxsplit 为早打分割次数。 re.split( , hi hello six) # 按空格分 [hi, hello, six]re.split([ |], hi hello|six) # 按空格或 | 分 [hi, hello, six]re.split([ab], abc) # 先按 a 分a的左边为空因此分为 和 bc再按 b 分b 的左边为空因此分为 和 c [, , c]sub 方法 sub(pattern, repl, string, count0, flags0) 方法替换原字符串某个文本第一个参数为正则第二个为替换成的字符串第三个为原字符串第四个为替换次数。并返回替换后的字符串。 re.sub(r\d, A, abcd12df45) abcdAdfAre.sub(r\d, A, abcd12df45, 1) abcdAdf45subn() 方法可以返回替换次数 re.subn(r\d, A, abcd12df45) (abcdAdfA, 2)compile 方法 前面我们都是直接在 re 方法中使用正则re 模块提供了一个 compile() 方法可以将正则编译成正则对象以便匹配规则可以重复使用。 pattern re.compile(r\d)其他方式直接传入正则对象即可 content 2018-11-17 17:18pattern re.compile(r\d{2}:\d{2})result re.findall(pattern,content)result [17:18]finditer 方法 finditer(pattern, string, flags0) 方法与 findall() 方法类似 不同的是前者将匹配结果封装成一个迭代器而后者将全部匹配结果存为一个列表。 ret re.finditer(\d, ss123dd456)next(ret).group() 123findall 方法 search() 方法返回匹配结果的第一个内容要想获得所有匹配内容。就需要借助 findall(pattern, string, flags0) 方法它会搜索整个字符串并将匹配结果存到一个列表中。若没有匹配成功则返回一个空列表。 re.findall(r\d,12so45ch) [12, 45]
http://www.w-s-a.com/news/577257/

相关文章:

  • 网站建设中 油财宝企业网址怎么整
  • asp.net空网站php网站开发要学什么
  • 做可视化的网站微信网站模版下载
  • 包头移动的网站建设茂名建站价格
  • 网站文章内容一键排版功能铜山网站建设
  • cdr可不可做网站对网站建设起到计划和指导的作用
  • 合肥最好的网站建设网页设计心得体会2000字
  • 西安网站品牌建设门户网站类型
  • 网上做调查问卷的网站请人做网站域名和主机
  • 个人网站模板html5找公司网站建设
  • 找最新游戏做视频网站一个做网站的团队需要哪些人员
  • 威海市做网站的做网站很难吗
  • 广州房地产网站建设方案怎么免费申请网站
  • 免费生成网站软件下载影视公司名字取名
  • 网站公司提供程序免费的网页入口
  • jsp网站开发实例教学房产网站怎么做400电话
  • 网络营销方式及流程广州seo工作
  • 专业商城网站制作免费网页设计成品
  • 韩国优秀设计网站找做网站找那个平台做
  • 贵州省清镇市建设学校网站国家企业信用信息公示系统官网河北
  • 游戏界面设计网站网站建设问一问公司
  • 织梦网站模板如何安装教程视频国外哪些网站可以注册域名
  • 用群晖做网站网站中文名称注册
  • 做一个企业网站需要哪些技术app开发公司名字
  • 网站建设有技术的公司图片在线设计平台
  • 建公司网站的详细步骤关于进一步加强网站建设
  • 丰宁县有做网站的吗?维护一个网站一年多少钱
  • 杭州网站设计渠道wordpress购物主题
  • 山东政务网站建设文字logo免费设计在线生成
  • 韩雪个人网站唐山网络运营推广