一个提高效率的工具,正则表达式,值得学习一下!

简介: 一个提高效率的工具,正则表达式,值得学习一下!

前言

在工作中一般使用正则表达式来匹配,替换,检索文本,可以大大提高了工作效率

文章内容收录到个人网站,方便阅读hardyfish.top/

觉得有收获,希望帮忙点赞,转发下哈,谢谢,谢谢

简介

正则表达式,又称规则表达式,通常被用来检索、替换那些符合某个模式(规则)的文本。

许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。

学会使用正则表达式可以极大提高我们文本处理效率,并且各大操作系统、编程语言、文本编辑器都已经支持正则表达式

在线正则测试工具:regex101.com/r/PnzZ4k/1

下面的例子我会使用Sublime Text(对了,这个工具也非常好用)实现

元字符

一般普通字符表示的还是原来的意思,比如字符 e

举例:

所谓元字符(Metacharacter )就是指那些在正则表达式中具有特殊意义的专用字符

特殊单字符

举例1:

举例2:

空白符

举例:

s 能匹配上各种空白符号,也可以匹配上空格

量词

举例1:

举例2:

范围

举例:

贪婪、非贪婪与独占

正则有三种模式:贪婪匹配、非贪婪匹配和独占模式

  • 贪婪匹配:在正则中,表示次数的量词默认是贪婪的,在贪婪模式下,会尝试尽可能最大长度去匹配。
  • 非贪婪匹配:找出长度最小且满足要求的,量词后面要加上英文的问号(?),正则就变成了 a*?

举个例子1:

匹配结果是:"aaa",""

为什么会匹配到空字符串?

因为星号(*)代表0到多次。

举个例子2:

独占模式:

不管是贪婪模式,还是非贪婪模式,都需要发生回溯才能完成相应的功能。

但是在一些场景下,我们不需要回溯,匹配不上返回失败就好了,因此正则中还有另外一种模式,独占模式,它类似贪婪匹配,但匹配过程不会发生回溯,因此在一些场合下性能会更好。

什么是回溯?

例如下面的正则:

regex = “xy{1,3}z”

text = “xyyz”

在匹配时,y{1,3}会尽可能长地去匹配,当匹配完 xyy 后,由于 y 要尽可能匹配最长,即三个,但字符串中后面是个 z 就会导致匹配不上,这时候正则就会向前回溯,吐出当前字符 z,接着用正则中的 z 去匹配

分组与引用

举个例子:

假设我们现在要去查找15位或18位数字。

根据前面学习的知识,使用量词可以表示出现次数,使用管道符号可以表示多个选择,你应该很快就能写出d15}d{18。

但经过测试,你会发现,这个正则并不能很好地完成任务,因为18位数字也会匹配上前15位

没有匹配到18位的记录

解决方式

可以用括号括起来表示一个整体

替换举例

替换后:

匹配模式

常见的匹配模式有4种,分别是不区分大小写模式、点号通配模式、多行模式和注释模式

不区分大小写模式

使用模式修饰符: 放在整个正则前面时,表示匹配模式

点号通配模式

点号它可以匹配上任何符号,但不能匹配换行,如何匹配真正的“任意”符号

多行匹配模式

多行模式的作用在于,使 ^ 和 $ 能匹配上每行的开头或结尾,我们可以使用模式修饰符号 (?m) 来指定这个模式

注释模式

为正则添加注释

断言

断言是指对匹配到的文本位置有要求。

通过一些例子来讲解。

你应该知道 d{11} 能匹配上11位数字,但这11位数字可能是18位身份证号中的一部分。再比如,去查找一个单词,我们要查找 tom,但其它的单词,比如 tomorrow 中也包含了tom

单词边界

环视

举例邮政编码的判断:6位数字,且左边不是数字,右边不是数字

最后

觉得有收获,希望帮忙点赞,转发下哈,谢谢,谢谢

文章内容收录到个人网站,方便阅读hardyfish.top/

参考资料:

  • 极客时间:正则表达式入门课
相关文章
|
2天前
|
JavaScript 前端开发 Scala
Python学习十:正则表达式
这篇文章是关于Python中正则表达式的使用,包括re模块的函数、特殊字符、匹配模式以及贪婪与非贪婪模式的详细介绍。
|
4月前
|
监控 Unix Linux
强大的文本处理工具组合:egrep、正则表达式、awk、cut、xargs
了解Linux和Unix文本处理的关键工具:egrep(扩展正则表达式搜索)、正则表达式、awk(文本分析)、cut(剪切文本)和xargs(传递参数给命令)。这些工具组合使用可高效处理、分析大量数据,尤其在日志分析和文本查询中。例如,从Web服务器日志中查找404错误,先用egrep筛选,再用awk或cut提取IP和URL,最后用xargs配合其他命令执行操作。掌握这些工具能提升工作效率。
|
5月前
|
Web App开发 JavaScript
学习VUE之正则表达式全集整理
学习VUE之正则表达式全集整理
58 0
|
2月前
|
SQL 数据处理 数据库
SQL正则表达式应用:文本数据处理的强大工具——深入探讨数据验证、模式搜索、字符替换等核心功能及性能优化和兼容性问题
【8月更文挑战第31天】SQL正则表达式是数据库管理和应用开发中处理文本数据的强大工具,支持数据验证、模式搜索和字符替换等功能。本文通过问答形式介绍了其基本概念、使用方法及注意事项,帮助读者掌握这一重要技能,提升文本数据处理效率。尽管功能强大,但在不同数据库系统中可能存在兼容性问题,需谨慎使用以优化性能。
42 0
|
2月前
|
开发者 Ruby
Ruby正则表达式的奥秘:如何用简单的语法构建强大的文本匹配与处理工具?
【8月更文挑战第31天】正则表达式是文本匹配的强大工具,通过简单模式即可实现复杂文本处理。作为动态、面向对象的语言,Ruby提供了全面的正则表达式支持,涵盖创建、匹配、替换及分割等功能。本文通过示例代码介绍如何在Ruby中使用正则表达式进行文本匹配,并分享了编写正则表达式的最佳实践,帮助开发者提升文本处理效率与准确性,更好地利用这一工具构建高效系统。
25 0
|
3月前
|
存储 JavaScript 前端开发
|
5月前
|
机器学习/深度学习 Python
正则表达式(Regular Expression,常简写为regex或regexp)是一种强大的文本处理工具
【5月更文挑战第12天】正则表达式是文本处理工具,Python的re模块支持其使用。元字符如.、*、+、?等在正则表达式中具有特殊含义,用于指定匹配规则。示例中,通过正则表达式模式匹配字符串中的电子邮件地址,并使用re.findall()找出所有匹配项。
60 4
|
5月前
|
Rust 监控 安全
【专栏】`ripgrep`(rg)是Linux下快速、内存高效的文本搜索工具,用Rust编写,支持PCRE2正则表达式
【4月更文挑战第28天】`ripgrep`(rg)是Linux下快速、内存高效的文本搜索工具,用Rust编写,支持PCRE2正则表达式。相比`grep`,它在处理大文件和复杂模式时更具优势。安装`rg`可通过软件包管理器,如在Debian系系统中使用`sudo apt install ripgrep`。基本用法包括简单搜索、递归搜索、忽略大小写、显示行号等。高级功能包括固定字符串搜索、多文件匹配、并行搜索、排除选项和区域搜索。适用于日志分析、代码审查等场景,是提升工作效率的利器。
452 4
|
5月前
|
数据安全/隐私保护 Python
Python正则表达式:强大的文本处理工具
Python正则表达式:强大的文本处理工具
44 1
|
5月前
探索正则表达式:强大文本匹配与处理工具
探索正则表达式:强大文本匹配与处理工具