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

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

简单来说

正则一般代指正则表达式

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


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

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

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

第一种写法

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

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

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

image.png

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

第二种写法

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}后面加上即可使贪婪变成非贪婪.

写在最后

  • 正则表达式相当于编程的小九九,背的时候有点恶心,但用起来非常爽!
  • 正则表达式,最早用于唯一标示复杂的神经网络,现可用于"唯一标示"某个字符串,也就是"唯一匹配"字符串
  • 正则表达式使用了大量的特殊字符,这些特殊字符在不同的语境下还会有不同的含义,所以正则的表达式看起来有点像乱码(表象无序的乱码,底层极致的规范)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏高性能服务器开发

全排列(含递归和非递归的解法)

全排列在近几年各大网络公司的笔试中出现的比较频繁 首先来看看题目是如何要求的(百度迅雷校招笔试题)。 用C++写一个函数, 如 Foo(const char *...

1713
来自专栏nummy

python堆排序heapq

堆是一种树形数据结构,其中子节点与父节点之间是一种有序关系。最大堆中父节点大于或等于两个子节点,最小堆父节点小于或等于两个子节点。Python的heapq模块实...

2103
来自专栏轮子工厂

6. 简单又复杂的“运算符”,建议你看一哈

昨天的《5. 很“迷”的字符与字符串》初稿本来很短的,但是我觉得内容太少了,就加了一些,结果好像就变得特别多〒▽〒。

873
来自专栏编程

八大排序算法总结与java实现

概述 因为健忘,加上对各种排序算法理解不深刻,过段时间面对排序就蒙了。所以决定对我们常见的这几种排序算法进行统一总结。首先罗列一下常见的十大排序算法: ? 请点...

28310
来自专栏xingoo, 一个梦想做发明家的程序员

【面试虐菜】—— JAVA面试题(1)

今天参加笔试,里面有设计模式,和一些基础题! 印象最深的是:什么不是Object的函数,我蒙的finalize,哎,无知! 还问了,接口与抽象类的不同,还...

2079
来自专栏坚毅的PHP

python的数学函数(1)-python组合函数模块itertools

要解决的问题: 输出n个 ['A','T','C','G'] 所有的排列组合。 比如n=2 时,输出为 AA,AT,AC,AG,TA,TT,TC,TG,……...

3924
来自专栏较真的前端

关于数字的前端面试题

3776
来自专栏程序员互动联盟

【编程基础】零基础学习Java之运算符

学习计算机编程语言都会遇到运算符这一知识点,运算符这个知识点是教怎么运用编程语言进行最基本的数据处理,下面就讲一下在Java语言中运算符是怎么回事。 1、算术运...

39710
来自专栏小詹同学

Leetcode打卡 | No.27 移除元素

欢迎和小詹一起定期刷leetcode,每周一和周五更新一题,每一题都吃透,欢迎一题多解,寻找最优解!这个记录帖哪怕只有一个读者,小詹也会坚持刷下去的!

711
来自专栏JetpropelledSnake

Python入门之三元表达式\列表推导式\生成器表达式\递归匿名函数\内置函数

本章目录:     一、三元表达式、列表推导式、生成器表达式     二、递归调用和二分法     三、匿名函数     四、内置函数 ============...

4055

扫码关注云+社区

领取腾讯云代金券