正则表达式
正则表达式在程序语言中很常见,本文也有利于其他语言中正则表达式的学习,用浅显易懂的例子帮助大家学习正则表达式
什么是正则表达式
正则表达式是用于描述字符排列和匹配模式的一种语法则它主要用于字符串的模式分割、匹配、查找及替换操作。
正则表达式与通配符
正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed 等命令可以支持正则表达式。
通配符用来匹配符合条件的文件名,通配符是完全匹配。Is、find、cp 这些命令不支持正则表达式,所以只能使用 shell 己的通配符来进行匹配了。
通配符
*
匹配任意内容?
匹配任意一个内容[]
匹配中括号中的一个字符
touch cangls
touch canyls
ls
cangls
canyls
run
script.sh
ls can?ls
cangls
canyls
ls can???
cangls
canyls
ls can*
cangls
canyls
ls can[gy]ls
cangls
canyls
基础正则表达式
?
和()
是扩展正则
“*”前一个字符匹配 0 次,或任意多次
a*
匹配所有内容包括空白行aa*
匹配至少包含有ー个 a 的行aaa*
匹配最少包含兩个连续 a 的字符串aaaaa*
则会匹配最少包含四个个连续 a 的字符串
.
匹配除了换行符外任意一个字符
s..d
会匹在 s 和 d 这两个字母之定有两个字符的单词s.*d
匹配在 s 和 d 字母之向有任意字符.*
匹配所有内容
^
匹配行首,$
匹配行尾
^M
匹配以大写“M”开头的行n$
匹配以小写“n”结尾的行^$
会匹配空白行
grep "b$" test.txt
ab
aabb
b
bb
bbb
bbbb
bbbbb
[]
匹配中括号中指定的任意一个字符,只匹配一个字符
s[ao]id
匹配 s 和 i 字母中,要不是 a、要不是 o[0-9]
匹配任意一个数字^[a-z]
匹配小写字母开头的行
[^]
匹配除中括号的字符以外的任意一个字符
^{^a-z}
匹配不用小写字母开头的行^[^a-zA-Z]
匹配不用字母开头的行