• Regular Expression


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

    先看一个判断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 字母/数字/汉字/下划线
     单词的开始/结束
    ^ 字符串的开始
    $ 字符串的结束

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

    "[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!");
    	}
    

    上述内容只是最最基本的关于正则表达式的知识,还有零宽断言、递归匹配等更加复杂的内容有待挖掘~

  • 相关阅读:
    c语言输入一个字符串,统计其字母,数字和其他字符的个数,并以柱状图输出
    c语言中的#ifdef和#ifndef
    宏定义#define
    c语言中的register int
    android SDK 更新的几个网址
    android studio启动不进行fetching Android sdk compoment information
    android eclipse ADT 安装maven插件失败
    Jsp 的映射
    Jsp 九大隐式对象
    Jsp 乱码处理
  • 原文地址:https://www.cnblogs.com/EIMadrigal/p/12172874.html
Copyright © 2020-2023  润新知