Skip to content

Latest commit

 

History

History
39 lines (29 loc) · 1.86 KB

正则表达式.md

File metadata and controls

39 lines (29 loc) · 1.86 KB

正则表达式

来自于Everything的正则表达式(Regular Expression, 常用简写:RegEx):

表达式 作用
a|b 匹配 a 或者 b
gr(a|e)y 匹配 gray或 grey
. 匹配任意一个字符(除了换行符)
[abc] 匹配a或b或c的一个
[^abc] 匹配任意一个字符但不包括a,b,c
[a-z] 匹配26个小写字母任意一个
[a-zA-Z] 匹配26个字母大小写任意一个
^ 匹配文件名的头部
$ 匹配文件名的尾部
* 匹配前一项内容0或者多次
? 匹配前一项内容0或者1次
+ 匹配前一项内容1次或者多次
{x} 匹配前一项内容 x 次
{x,} 匹配前一项内容 x 或多次
{x,y} 匹配前一项内容次数介于 x 和 y之间
\w 匹配字母或者数字或者下划线或者汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束

上述是常用的正则表达式,更多可以参见维基百科或者菜鸟教程:正则表达式

在Listary等很多软件中,注意使用*来表示匹配任意字符,实际上这是 通配符 ( wildcard),和通配符类似,正则表达式也是用来进行文本匹配的工具,只不过比起通配符,它能更精确地描述你的需求。 通常地,星号 * 匹配0个或以上的字符,问号 ? 匹配1个字符。比如,*.txt 可以匹配所有文本文档,te?t.txt 匹配所有第三个字符不确定其他确定如上的文本文档。

贪婪匹配与最小匹配

  1. .* 单个字符匹配任意次,即贪婪匹配。
  2. .*? 是满足条件的情况只匹配一次,即最小匹配.

*限定符是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。