正则表达式学习 (一)

前端之家收集整理的这篇文章主要介绍了正则表达式学习 (一)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

(一) 基本正则表达式

元数据 意义 范例
^word 搜寻以word开头的行 例如,搜寻#开头的行
grep -n '\<#' /etc/passwd
word$ 搜寻以word结束的行 例如,搜寻以khy结束的行
grep -n 'kehuanyu\>' password
30:kehuanyu:x:1005:1004:柯环宇:/home/kehuanyu:/bin/bash
. 匹配任意一个字符 例如:grep -n 'u.x' password
30:kehuanyu:x:1005:1004:柯环宇:/home/kehuanyu:/bin/bash
中间的.可以匹配任意一个字符,但是不能为空
\ 转义字符 例如:搜寻的 " 是一个特殊字符,在正则表示中有特殊含义,必须先转
grep -n \" password_bak
显示72:"kehuanyu"
* 前面的字符重复0到多次 例如匹配good,god,gd
grep 'g*d' test
[list] 匹配一系列字符中的一个
例如:查找zhang姓 用户
$ grep 'zhang[byj]' password_bak
显示如下:
zhangyapin:x:1006:1004:张XXX:/home/zhangyapin:/bin/bash
zhangbo:x:1007:1004:张XX:/home/zhangbo:/bin/bash
zhangjun:x:1026:1026::/home/zhangjun:/bin/bash
[^list] 匹配字符集以外的字符 例如:grep 'zhang[^yxja]' password_bak
过滤掉含有zhang 但是后面不包含y,x,j,a字符的行
zhangben:x:1007:1004:张XX:/home/zhangben:/bin/bash
zhangzhjia:x:1033:1006:张XX:/home/zhangzhjia:/bin/bash
zhangpin:x:1034:1006:张XX:/home/zhangpin:/bin/bash
[n1-n2] 匹配一个字符范围中的字符 例如:匹配数字字符
grep '[0-9]' password
\{n1,n2\} 重复前面的字符n1,n2次 匹配字符koo,kooo,koooo,kooooo
grep 'ko\{2,5\}' password_bak
koo
kooo
koooo
kooooo
\<word 匹配word开头的单词 例如:grep '\<kehuanyu' password_bak
kehuanyu:x:1005:1004:柯环宇:/home/kehuanyu:/bin/bash
word\> 匹配word结尾的单词 例如:grep 'kehuanyu\>' password_bak
kehuanyu:x:1005:1004:柯环宇:/home/kehuanyu:/bin/bash
+ 重复前面的字符一次到多次 例如:匹配rot,root,...
grep -nE 'ro+t' password_bak
显示如下:
1:root:x:0:0:root:/root:/bin/bash
78:rot
? 匹配0或一次前面的字符 例如匹配:kt,ket,kett
grep -nE 'ke?t' password_bak
显示如下:
80:kt
81:ket
82:kett
84:kt
| 或的方式匹配多个字串 例如:
grep -nE 'kehuanyu|zhang' password
过滤含有kehuanyu或者zhang字串的行
() 匹配括号内的字符串 例如:grep -nE 'zhang(bo|an)' password_bak
显示如下:
32:zhangbo:x:1007:1004:张x:/home/zhangbo:/bin/bash
63:zhanganli:x:1038:1006:张xx:/home/zhanganlong:/bin/bash

(二)通配

当查找文件时,可以使用通配符来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,也可以使用通配符。
用*可以代替之后的所有字符。
.匹配任何单个字符
*匹配任意多个其前面出现的字符
^在行或者字符串的起始处匹配
$在行或者字符串的末尾处匹配
[…]匹配方括号内的任意字符
{n,m}匹配其前面出现的字符n到m次
+匹配前面正则表达式的一个或者多个实例
?匹配前面正面正则表达式的零个或者一个实例
|匹配|符号前后的正则表达式
( )匹配括号内部的正则表达式
[:alnum:]用于匹配数字字符
[:alpha:]用于匹配字母字符
[:blank:]用于匹配空格或者tab
[:cntrl:]用于匹配控制字符
[:digit:]用于匹配数字字符
[:graph:]用于匹配非空格字符
[:lower:]用于匹配小写字符
[:print:]用于匹配可显示的字符
[:punct:]用于匹配标点符号
[:space:]用于匹配空白字符
[:upper:]用于匹配大写字母字符
[:xdigit:]用于匹配十六进制数字

(三)运算符的优先级为(从高到低)

[..] [==] [::]用于排序的方括号符号

Metacharacter转义字符

[]方括号表达式

() digit字表达式和后向引用

* ? +前置字符重现的表达式

^ $锚点

(四)正则表达式举例

hello位于一行内的hello

^hello位于字符串首部的hello

hello$位于字符串尾部的hello

^hello$本行或者字符串仅仅包含hello

hel+o字符串中出现hello helllo hellllo等

[Hh]ello字符串出现Hello或者hello

he?llo字符串中出现hello或者hllo

h.llo字符串中出现hello hallo等,h后要跟一个字符

hel{2}o 字符串出现hello

he(l)1o字符串中出现hello

匹配正整数可以用^[1-9]d*$

匹配负整数可以用^-[1-9]d*$

匹配邮政编码可以用^[1-9]d{5}$

匹配IP地址可以用d{1,3}.d{1,3}

原文链接:https://www.f2er.com/regex/361990.html

猜你在找的正则表达式相关文章