首先声明的是:绝对不是标题党!真的只需要五分钟!五分钟你就可以掌握最基本的正则表达式,并轻松写出一般的正则表达式,像电话,邮箱之类的。本文适合新手或者不怎么会正则表达式的同学,同时在此也明确告诉你看完此文你不会立马达到牛逼掉渣天的地步,但相信经过此文你应该能看懂大部分正则,并手写一般的正则是没有问题的。本文的主要目的是让你快速的掌握正则表达式的基础和基本使用。当然了如果您是个老铁欢迎指教,废话不多说,让我们开始吧。
什么是正则表达式(Regex)
正则表达式(Regular Expression),简称Regex,是描述文本的一种模式。其实就是规定了一些通配符从而到达匹配一段文本的能力。
举个简单的例子,有如下一段文本:
A regular expression, or regex for short, is a pattern describing a certain amount of text.
如果我想要找到其中的单词 “pattern” ,想想平时我们普通人正常的套路是,ctrl+f 使用查找功能,直接搜索 "pattern" 单词即可。
其实这里我们用来搜索的 “pattern” 就是一个正则表达式,此时是不是在想,卧槽这么太简单了?逗我呢?
事实真的就是这么简单!不信你可以找个在线正则表达式试试。当然了这也是最简单的一种。为什么说是最简单的呢?因为它是全字符匹配的,并没有使用到正则表达式中定义的一些特殊字符,个人理解为通配符,更形象易懂,有的地方也叫元字符。
匹配原理
简单说下正则表达式的执行过程,先匹配第一个字母p,如果匹配则继续匹配下一个字母a,依次类推,直到匹配到所有的字母。简单来说就是逐字符匹配。
元字符/通配符
上文我已经对一个正则表达式的使用有了一些基本的了解,但是我们不可能每次都去全字符匹配,那也太low了,再说了匹配个邮箱地址不可能穷举出所有的邮箱地址把。这个时候我们就需要用到正则表达式的通配符,顾名思义就是可以用规定的字符代替一系列字符。
- . 除换行符外任意字符
- d 数字0-9 D 非数字
- w 字母,数字,下划线 W 非字母,数字,下划线
- s 空格,制表符,换行符 S 非空格,制表符,换行符
- ^ 字符串开始
- $ 字符串结尾
以上只是列出来几个常用,其它可能需要随着读者不断实践再去学习了。
来个例子可能更直观一些:有个数字 9 ,我们如果想要匹配,正则表达式,简单粗暴的写法就是:9,用通配符就是:d ,当然了你可以用 . 或者 w 等,这也就是为什么匹配个东西为啥会有那么多种写法的原因了。不同的人可能写出来也不一样。
上面这个太简单了有木有,那么现在我要匹配 99 呢?当然正则表达式你依然可以直接写 99 ,我保证不打死你。做人得有追求不是,我们可以这么写正则:dd,当然了还可以使用其它通配符,可自行脑补。
但是但是,万一我们要匹配的是 99……99 包含n个9的字符串呢,不能手写n个 d 进行匹配吧。
量词
答案就是量词,就是指定我们需要匹配的数量,以下就是基本的一些量词说明:
- * 零次或多次
- + 一次或多次
- ?一次或零次
- {n} n次
- {n,} n次到无数次
- {n,m} n次到m次
那上文的匹配n个9字符串的正则表达式就可以写成:d+或者d{1,}
转义字符
有时候我们所有匹配的文本里面有正则表达式的关键词(元字符或通配符),那么就需要使用转移字符 ,例如匹配 . 就需要写成 .
看到这里是不是觉得很简单,那么我们就使用上面所介绍的内容,自己写出来一个匹配大部分邮件地址的正则表达式,如:w+@w+.w+
此正则表达式可以匹配如下格式的邮件地址: 多个字母或者数字或下划线 @ 多个字母或者数字或下划线 . 多个字母或者数字或下划线 ,比如:nuss@qq.com
字符集
当然了使用w+@w+.w+ 正则表达式只能匹配一部分的邮箱格式,比如邮箱里面带有 .或者-(减号),咱们写的这个就无法匹配了。这时候我们就发现通配符也不能代表所有字符的情况了,这时候我们就需要用字符集的概念了。
啥叫字符集呢? 就是[ ]括起来的内容就是字符集,可以匹配[ ]中的任意字符 ,也可以理解成我们可以自定义的通配符,
比如有个邮箱:nuss.-666@qq.com
此时我们要匹配字母,数字,点,减号,内置的通配符肯定是无法达到我们的匹配要求了,此时我们就需要使用字符集自定义一个匹配规则:[w.-]+@w+.w+
前面[w.-]+意思就是一个或多个匹配字母,数字,下划线,点(是特殊字符需要加进行转义),减号,当然了我们也可以写的更直接点:[A-Za-z0-9_.-]+
结语
本文尽量使用简单通俗的语言来讲解了正则表达式的基本使用,并没有面面具到所有的语法,希望对你有所帮助,当然了正则表达式远远没有这么简单,比如分组,零宽断言等等,还有很多更高级的用法需要你去不断的探索和实践。以用促学快速掌握,然后再再去看详细的正则介绍将事半功倍。推荐《正则表达式30分钟入门教程》和文末的参考链接。同时在此也要提醒谨慎使用,用不好也会带来很严重的性能问题可观看此文进行了解《藏在正则表达式里的陷阱》
参考: