前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >正则 (入门篇)简单来说写好正则表达式的两个要点:写在最后

正则 (入门篇)简单来说写好正则表达式的两个要点:写在最后

作者头像
zhaoolee
发布2018-04-19 10:21:40
5990
发布2018-04-19 10:21:40
举报
文章被收录于专栏:木子昭的博客木子昭的博客

如果你对正则感兴趣,读完这篇文章,一定会有收获~_^

简单来说

正则一般代指正则表达式

正则表达式是从"复杂数据"中抽取"有用数据"的公式


写好正则表达式的两个要点:

1.正确匹配字符数量(相关符号:*,+,?,{})

2.正确匹配字符种类(相关符号:除上面符号以外的其它符号^_~)


相关符号

.代表"万能匹配";//可以匹配除了"\n"(换行符)之外的任何单个字符
?代表"不要贪婪";//用在*,+,?后面,表示匹配的越少越好
?也代表"非〇即一";
^代表"除了你";//在中括号内,如[^_]表示单个非下划线字符
^也代表"匹配首位";
$代表"匹配末位";
*代表"〇至无穷"; //大于等于0的整数
+代表"一至无穷";//大于等于1的整数
|代表"我们都一样";//|表示"或"

\d代表"匹配数字";//0-9
\D代表"匹配非\d"
\w代表"匹配字符";//0-9,A-Z,a-z,_
\W代表"匹配非\w"

几个括号

大括号{}用来确定数量

re.match表示正则模块里面的match函数(match函数默认从字符串首部开始匹配),\d匹配单个数字{3}代表匹配3个

image.png

中括号[]用来确定匹配字符的种类

第一种写法
代码语言:javascript
复制
re.match(r"[123]{1}根烟","1根烟")

re.match(r"[123]{1}根烟","2根烟")

re.match(r"[123]{1}根烟","3根烟")

image.png

中括号内的123可匹配单个1或2或3

第二种写法
代码语言:javascript
复制
re.match(r"[1,2,3]{1}根烟","1根烟")

re.match(r"[1,2,3]{1}根烟","2根烟")

re.match(r"[1,2,3]{1}根烟","3根烟")

image.png

小括号()用来为表达式整体匹配后,"按需提取"(经常和函数group配合使用)
如提取域名中的词组(以简书域名为例)

re.match(r".*//.*?\.+(.*?)\.+[^\.]*","http://www.bilibili.com").group(1)

image.png

什么是贪婪匹配?

  • 贪婪的总是尝试匹配尽可能多的字符;(大多编程语言的正则默认贪婪)
  • *,?,+,{m,n}后面加上即可使贪婪变成非贪婪.

写在最后

  • 正则表达式相当于编程的小九九,背的时候有点恶心,但用起来非常爽!
  • 正则表达式,最早用于唯一标示复杂的神经网络,现可用于"唯一标示"某个字符串,也就是"唯一匹配"字符串
  • 正则表达式使用了大量的特殊字符,这些特殊字符在不同的语境下还会有不同的含义,所以正则的表达式看起来有点像乱码(表象无序的乱码,底层极致的规范)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.08.07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简单来说
    • 正则一般代指正则表达式
      • 正则表达式是从"复杂数据"中抽取"有用数据"的公式
      • 写好正则表达式的两个要点:
        • 1.正确匹配字符数量(相关符号:*,+,?,{})
          • 2.正确匹配字符种类(相关符号:除上面符号以外的其它符号^_~)
            • 相关符号
            • 几个括号
            • 中括号[]用来确定匹配字符的种类
        • 写在最后
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档