5分钟正则表达式,了解一下!

首先声明的是:绝对不是标题党!真的只需要五分钟!五分钟你就可以掌握最基本的正则表达式,并轻松写出一般的正则表达式,像电话,邮箱之类的。本文适合新手或者不怎么会正则表达式的同学,同时在此也明确告诉你看完此文你不会立马达到牛逼掉渣天的地步,但相信经过此文你应该能看懂大部分正则,并手写一般的正则是没有问题的。本文的主要目的是让你快速的掌握正则表达式的基础和基本使用。当然了如果您是个老铁欢迎指教,废话不多说,让我们开始吧。

什么是正则表达式(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 ,我保证不打死你。做人得有追求不是,我们可以这么写正则:\d\d,当然了还可以使用其它通配符,可自行脑补。
但是但是,万一我们要匹配的是 99……99 包含n个9的字符串呢,不能手写n个 \d 进行匹配吧。

量词

答案就是量词,就是指定我们需要匹配的数量,以下就是基本的一些量词说明:

  • * 零次或多次
  • + 一次或多次
  • ?一次或零次
  • {n} n次
  • {n,} n次到无数次
  • {n,m} n次到m次

那上文的匹配n个9字符串的正则表达式就可以写成:\d+或者\d{1,}

转义字符

有时候我们所有匹配的文本里面有正则表达式的关键词(元字符或通配符),那么就需要使用转移字符 \ ,例如匹配 . 就需要写成 \.

看到这里是不是觉得很简单,那么我们就使用上面所介绍的内容,自己写出来一个匹配大部分邮件地址的正则表达式,如:\w+@\w+\.\w+
此正则表达式可以匹配如下格式的邮件地址: 多个字母或者数字或下划线 @ 多个字母或者数字或下划线 . 多个字母或者数字或下划线 ,比如:[email protected]

字符集

当然了使用\w+@\w+\.\w+ 正则表达式只能匹配一部分的邮箱格式,比如邮箱里面带有 .或者-(减号),咱们写的这个就无法匹配了。这时候我们就发现通配符也不能代表所有字符的情况了,这时候我们就需要用字符集的概念了。
啥叫字符集呢? 就是[ ]括起来的内容就是字符集,可以匹配[ ]中的任意字符 ,也可以理解成我们可以自定义的通配符
比如有个邮箱:[email protected]
此时我们要匹配字母,数字,点,减号,内置的通配符肯定是无法达到我们的匹配要求了,此时我们就需要使用字符集自定义一个匹配规则:[\w\.-]+@\w+\.\w+
前面[\w\.-]+意思就是一个或多个匹配字母,数字,下划线,点(是特殊字符需要加\进行转义),减号,当然了我们也可以写的更直接点:[A-Za-z0-9_.-]+

结语

本文尽量使用简单通俗的语言来讲解了正则表达式的基本使用,并没有面面具到所有的语法,希望对你有所帮助,当然了正则表达式远远没有这么简单,比如分组,零宽断言等等,还有很多更高级的用法需要你去不断的探索和实践。以用促学快速掌握,然后再再去看详细的正则介绍将事半功倍。推荐《正则表达式30分钟入门教程》和文末的参考链接。同时在此也要提醒谨慎使用,用不好也会带来很严重的性能问题可观看此文进行了解《藏在正则表达式里的陷阱》

参考:

猜你喜欢

转载自www.cnblogs.com/Nuss/p/9245884.html