. 匹配任意一个字符 a.可以匹配aa,ax,a0
[] 匹配中括号中任意一个 [123]4可以匹配14,24,34 [0-9]匹配任意一个数字 [^0-9]匹配任意一个不是数字的
*匹配前一个单位零次或多次 .*可以匹配任何字符
?匹配前一个单位零次或一次
+匹配前一个单位一次或多次
^匹配后一个单位开头 ^123匹配以123开头
$匹配前一个单位结尾 234$匹配以234结尾
{n} 精确匹配前一个单位n次
{,n} 匹配前一个单位最多n次
{n,} 匹配前一个单位最少n次
{n,m} 匹配前一个单位n到m次
联系一下:
1、组合匹配:匹配邮件地址(常见格式123@qq.com zhangsan_110@163.com)
.*@[0-9a-z]*\.com (匹配任意字符然后匹配@符号,之后从0-9 a-z中匹配,再匹配.com)
2、匹配所有合法数字(正整数负整数和小数100 1.4 -39.20)
^-?[0-9]+\.{0,1}[0-9]*$ (以零个或者一个-开头,匹配至少一个0-9的字符,然后匹配0-1个.符号,然后匹配以数字结尾)
但是这里其实并不严谨,按照上面的正则表达式,123. 的表达式也是合法的。解决方法,拆分成两个正则表达式,一个匹配小数点,一个不匹配小数点。
3、匹配合法的日期格式(2019-12-12 12:12:12其中日期和时间用空格分割)
^[1-9][0-9]*-[1-9][0-9]*-[1-9][0-9]* [1-9][0-9]:[1-9][0-9]:[1-9][0-9]$
这些初级的正则表达式语法基本可以满足shell环境下,grep等命令的使用。