正则表达式浅解

正则表达式:由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能。

扩展正则表达式元字符:

字符匹配:
. 匹配任意单个字符
[] 匹配指定范围内的任意单个字符
[^] 匹配指定范围外的任意单个字符
[:alnum:] 字母和数字
[:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z
[:lower:] 小写字母
[:upper:] 大写字母
[:blank:] 空白字符(空格和制表符)
[:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)
[:cntrl:] 不可打印的控制字符(退格、删除、警铃…)
[:digit:] 十进制数字
[:xdigit:]十六进制数字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 标点符号

匹配次数:
用在要指定次数的字符后面,用于指定前面的字符要出现的次数
* 匹配前面的字符任意次,包括0次 贪婪模式:尽可能长的匹配
.* 任意长度的任意字符
? 匹配其前面的字符0或1次
+ 匹配其前面的字符至少1次
{n} 匹配前面的字符n次
{m,n} 匹配前面的字符至少m次,至多n次
{,n} 匹配前面的字符至多n次
{n,} 匹配前面的字符至少n次

位置锚定:定位出现的位置
^ 行首锚定,用于模式的最左侧
$ 行尾锚定,用于模式的最右侧
^PATTERN$ 用于模式匹配整行
^$ 空行
^[[:space:]]*$ 空白行
\< 或 \b 词首锚定,用于单词模式的左侧
\> 或 \b 词尾锚定;用于单词模式的右侧
\<PATTERN\> 匹配整个单词

分组:
()
后向引用:\1, \2, …
或者:
a|b: a或b
C|cat: C或cat
(C|c)at:Cat或cat

正则表达式中的3个重要符号:Bracket(括号), caret(插入符号)和Dollars(美元符号)

Bracket:

在正则表达式中有3种类型的括号201111170806251752

方括号 “[]”和花括号”{}” 。

方括号”[]”内是需要匹配的字符,花括号”{}”内是指定匹配字符的数量。

圆括号”()” 则用来分组。

Caret:

插入符号 “^” 表示正则式的开始。

Dollars:

美元符号”$” 表示正则式的结束。

现在你知道上面的3个语法后,你就可以写世界上任何一条验证规则了。比如下面的例子就很好的说明了上面3条正则语法是如何协调运作的:

^[a-z]{1,2}$

  • 上面的这条正则式只能匹配a-z的英文字母,同样是在中括号中标明匹配范围。
  • 花括号中则是标明匹配字符串的最小长度和最大长度。
  • 最后为了让表达式更规则,分别在开头和结尾加上了插入符号”^”和美元符号”$”。

现在我们就用上面的3条语法来实现一些正则表达式的验证规则:

1.如何匹配像91230456, 01237648这样的固定8位数?

“^[0-9]{8}$”

2.如何验证最小长度为3最大长度为7的数字,如:123, 1274667, 87654?

“^[0-9]{3,7}$”

3.如何验证像LJI10201020那样的发票编号,前3个是字母剩余为8位长度的数字?

“^[[:alpha:]]{3}[0-9]{8}$”

4.如何验证简单的网址URL格式?

“^www[.][[:alnum:]]{1,}[.](com|org)$”

5.如何验证email格式?

“^[[:alnum:]]{1,}@[[:alnum:]]{1,}.(com|ong)$”

6.如何验证值在0-25的数字?

“^(([0-9])|(1[0-9])|(2[0-5]))$”

7.验证格式为YYYY/MM/DD的日期?

“^(1[9][7-9][0-9]|2[0][0-9][0-9])[/]([1-9]|0[1-9]|1[0-2])[-/]([1-9]|0[1-9]|1[0-9]|2[0-9]|3[0-1])$”

以上例子由浅入深,基本涵盖了正则表达式的一些基本用法,有利于初级阶段的学习与思考。

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/95124

赞 (1)
烟花儿烟花儿
上一篇 2018-04-07 11:47
下一篇 2018-04-07 15:29

相关推荐

  • Linux系统用户管理与文本处理

    1、列出当前系统上所有已经登录的用户的用户名,同一个用户登录多次,则只显示一次。 ~]# who | cut -d’ ‘ -f1 | sort -u 2、取出最后登录到当前系统的用户的相关信息。 ~]# who | sort -k 3 -r | head -n 1 | cut -d’ ‘ -f1 | id 3、…

    Linux笔记 2018-07-15
  • Linux文本查看及处理工具

    Linux中,日志和配置都使用文本来存储和修改,对文本的查看及处理是最基本也是最常用的操作之一。而文本处理工具中,有被称为Linux文本处理三剑客的grep、sed和awk,但不要激动,Linux文本三剑客另起文章来讲,本文先从一些经常用到的,功能简洁但非常实用的工具说起。 wc命令 cut命令 sort命令 uniq命令 diff命令 patch命令 tr…

    2018-05-06
  • yum命令及yum仓库构建

    yum命令 yum [options] [command] [package …] yum命令行选项 –nogpgcheck 禁止进行gpg check -y 自动回答yes -q 静默模式 –disablerepo=repoidglob 临时禁用此处的repo –enablerepo=repoidglob 临时启用此处的repo –noplug…

    Linux笔记 2018-06-10
  • linux与xshell入门

    难的不行,做标记

    2018-07-29
  • Linux基础知识

    一:用户登录 root用户:管理员账户,也被称为超级用户,root拥有对Linux系统的所有权限,甚至可以把自己杀死(rm -rf /*),除非必须,一般不用root用户登录系统 普通用户:权限受到限制,只可以对自己有权限的文件进行操作 二:终端(terminal) 1.设备终端 键盘鼠标显示器 2.物理终端( /dev/console ) 控制台conso…

    2018-03-29
  • 第二周作业

    第二周

    Linux笔记 2018-05-20