标签:regex code 计算机科学 body eve email 还需 正则表达式引擎 正则
正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。
先看一个判断Email地址是否合法的例子:
"\\w+@\\w+(\\.\\w{2,3})*\\.\\w{2,3}"一般Email地址的格式为:X@X.com,X表示一个或多个字符,.com后面可能还会跟有.cn等。总结这些规律,我们用上述的regex来匹配。
当然,这种匹配可能会遗漏某些特殊的Email地址,想要更大范围的覆盖,还需要更为复杂精巧的设计。
接着解释下上面的regex:
\\w表示匹配字母/数字/下划线/汉字;
+表示字符可以出现一次/多次;
(\\.\\w{2,3})*表示类似.edu格式的字符串可以出现零次/多次。
\在计算机科学中一般表示转义,形如\w的叫做元字符,类似的还有:
| 元字符 | 意义 | 
|---|---|
| . | 除换行符外任意字符 | 
| \d | 数字 | 
| \w | 字母/数字/汉字/下划线 | 
| \b | 单词的开始/结束 | 
| ^ | 字符串的开始 | 
| $ | 字符串的结束 | 
还可以通过[]表示元字符:
"[abc]23"这样a23,b23,c23都是匹配的字符串。
形如+,*叫做修饰限定符,用来控制某类串重复多少次:
| 修饰限定符 | 意义 | 
|---|---|
| * | 0次/多次 | 
| + | 1次/多次 | 
| ? | 0次/1次 | 
| {n} | n次 | 
| {n,} | n次/更多次 | 
| {n,m} | n~m次 | 
很多语言和文本编辑器都集成了正则表达式引擎,以Java为例来测试下上述例子:
public static void main(String[] args) {
        String regex = "\\w+@\\w+(\\.\\w{2,3})*\\.\\w{2,3}";
        String s1 = "hello@stu.edu.cn";
        if(s1.matches(regex))
            System.out.println("Valid Address!");
    }上述内容只是最最基本的关于正则表达式的知识,还有零宽断言、递归匹配等更加复杂的内容有待挖掘~
标签:regex code 计算机科学 body eve email 还需 正则表达式引擎 正则
原文地址:https://www.cnblogs.com/EIMadrigal/p/12172874.html