正则表达式(Regular expression)
理解: wiki: a sequence of characters that define a search pattern
个人翻译:定义某种匹配规则的字符序列
目的:检验字符串是否符合某种规则
例子:Windows中文件名不能含有这些字符 [, /, \, |, <, >, # ,? , :, * 可用正则表达式解决
一.通过代码讲解正则表达式的使用:
C#版本
bool IsValidFilename(string testName)
{
Regex invalidFileName = new Regex(@"[/\|<>#?*:]");
if (invalidFileName.IsMatch(testName))
{
return false;
};
return true;
}
通常我们会定义一个匹配规则的载体,代码中@"[/\|<>#?*:]"
是规则, invalidFileName
是载体。怎么理解?invalidFileName
对象通过@"[/\|<>#?*:]
构造,这个对象会调用IsMatch()
方法去匹配字符串,匹配的规则就是@"[/\|<>#?*:]
二.正则表达式语法
正则表达式在各种语言中的使用套路大同小异,学习正则表达式,其核心是匹配规则的编写
这是简易入门,所以我并不会向其他教程或博客通篇列举各种语法,我只是介绍最简单最常用的语法,等到自己发现某种规则没有思路编写,我们再去查相关资料进行学习,这才是学习正则表达式的正确方法。
这里就以我们上面代码用到的规则讲解一下,我们发现,[]
中包含着Windows文件名中所不能包含的字符。对的,就像你猜的一样,[]
中包含的字母在要匹配的字符串中出现,就会匹配成功。(前面的@
是C#语法,加上了@
,我们写字符串的时候就不需要考虑转义字符了)
三.总结
这仅仅是简易入门,正则表达式的学习不是一朝一夕的事情,需要长久的使用和总结记忆。下面是语法参考资料
正则表达式规则