码迷,mamicode.com
首页 > 其他好文 > 详细

正则表达式

时间:2020-01-10 13:02:16      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:regex   code   计算机科学   body   eve   email   还需   正则表达式引擎   正则   

正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。

先看一个判断Email地址是否合法的例子:

"\\w+@\\w+(\\.\\w{2,3})*\\.\\w{2,3}"

一般Email地址的格式为:X@X.comX表示一个或多个字符,.com后面可能还会跟有.cn等。总结这些规律,我们用上述的regex来匹配。
当然,这种匹配可能会遗漏某些特殊的Email地址,想要更大范围的覆盖,还需要更为复杂精巧的设计。
接着解释下上面的regex:
\\w表示匹配字母/数字/下划线/汉字;
+表示字符可以出现一次/多次;
(\\.\\w{2,3})*表示类似.edu格式的字符串可以出现零次/多次。
\在计算机科学中一般表示转义,形如\w的叫做元字符,类似的还有:

元字符 意义
. 除换行符外任意字符
\d 数字
\w 字母/数字/汉字/下划线
\b 单词的开始/结束
^ 字符串的开始
$ 字符串的结束

还可以通过[]表示元字符:

"[abc]23"

这样a23b23c23都是匹配的字符串。
形如+*叫做修饰限定符,用来控制某类串重复多少次:

修饰限定符 意义
* 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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!