最近接触到正则表达式,用于匹配对应的字符串,觉得很神奇,于是开始一个学习。
有句老话说得好:“爬虫写得好,牢范吃得饱。”哈哈哈当然是开个玩笑。
regex101: build, test, and debug regex
这个网站可以帮助我们实时地测试RegExp(正则表达式),后面的教程都在这个平台上进行。
要学习RegEx首先要学会各种符号的用法。
限定符仅作用与左边一个字符,或左边的一块表达式。
也可以这样写:
不难发现,前面的这些?+*都可以用{}来表达,不过为了方便就会用前面的表示。
在几乎所有编程语言中都有或运算来表示一个不太好一步表示的逻辑集合,在RegExp中也可以。
符号:|
可以将左右两个表达式取并集作为新的表达式,但优先级低于表达式的拼接
比如我要得到所有的a和an,就可以像下面这样写。注意两边要用括号和\b包围起来,\b确保这是一个单词而不是一个单词的一部分,括号是为了防止把"\ba"和"an\b"作为两个表达式,我们的表达式应该是a和an。
格式:abc表示这一位可以是abc中的任意字符,也可以用区间来表示,比如a-z表示这一位可以是一个小写字母,a-zA-Z0-9+表示这里可以是一个或多个“大写字母或小写字母或数字”。
举个例子,我要匹配所有格式为"班级+学号"中找出所有zy02班的人,可以像下图这样做。
如果要找出所有jsj1班到3班的,可以像下面这样做。
这里的\d和0-9等价。值得注意的是这里的非法学号jsj0100没有被匹配到。
也可以在 的开头添加一个 ^ 字符,表示排除。
RegExp默认匹配模式为贪婪匹配,也就是尽可能长。
假如我在一段HTML中想要匹配出每一个<>标签,如果像下面这样写,会把整个文档作为一个长字符串匹配。
这显然不是我们想要的结果,我们就可以利用?来改为懒惰匹配。
引用一段菜鸟教程的文章《正则表达式 – 修饰符(标记) | 菜鸟教程》,直接偷懒一手。
一般会用/g,表示global全局搜索。
python需要先引入re库,这是一个很强大的字符串匹配库。
我们利用re.search(pattern, string, flags)来做匹配,会返回一个结果组成的元组,如果没找到返回None,常用于判断。
假如我要在python中识别一段式子是一个负数,还是一个表达式时,可以这样匹配:
再举个例子,假如我要在一段html中找出所有a标签,可以像下面这样做,,re.findall返回一个list。
本文结束啦,感谢大家的阅读!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。