• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    正则表达式教程之匹配单个字符详解

    本文实例讲述了正则表达式教程之匹配单个字符。分享给大家供大家参考,具体如下:

    注:在所有例子中正则表达式匹配结果包含在源文本中的之间,有的例子会使用Java来实现,如果是java本身正则表达式的用法,会在相应的地方说明。所有java例子都在JDK1.6.0_13下测试通过。

    java测试代码:

    /**
     * 根据正则表达式和要匹配的源文本,输出匹配结果
     * @param regex 正则表达式
     * @param sourceText 要匹配的源文本
     */
    public static void matchAndPrint(String regex, String sourceText){
      Pattern pattern = Pattern.compile(regex);
      Matcher matcher = pattern.matcher(sourceText);
      while(matcher.find()){
        System.out.println(matcher.group());
      }
    }
    
    

    一、匹配纯文本

    1、只有一个匹配结果

    首先来看一个简单的正则表达式,today,虽然它本身是纯文本,但它是一个正则表达式。来看一个例子:

    源文本:Yesterday is history,tomorrow is a mystery, but today is a gift.

    正则表达式:today

    结果:Yesterday is history,tomorrow is a mystery, but 【today】 is a gift.

    分析:这里使用的正则表达式是纯文本,它匹配了源文本中的today。

    调用matchAndPrint方法,输出结果是:

    today

    2、有多个匹配结果

    源文本:Yesterday is history,tomorrow is a mystery, but today is a gift.

    正则表达式:is

    结果:Yesterday is history,tomorrow is a mystery, but 【today】 is a gift.

    分析:在源文本中,有三个is,但输出了四个is,因为history中的is也会被匹配到。

    调用matchAndPrint方法,输出结果是:

    is

    is

    is

    is

    3、字母大小写问题

    正则表达式是区分字母大小写的,但很多正则表达式的实现中也支持不区分大小写的匹配操作。在JavaScript中,使用i标志来执行一次不区分字母大小写的匹配。在java中,如果要不区分大小写,那么在编译正则表达式时,可以指定:

    Patternpattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
    
    

    二、匹配任意字符

    前面见到的正则表达式都是静态的纯文本,它们根本体现不出正则表达式的威力。下面,来看看如何使用正则表达式来匹配不可预知的字符。

    在正则表达式中,特殊字符(或字符集合)用来给出要搜索的东西。.字符(英文状态句号)可以匹配任何一个单个字符。相当于DOS中的?字符和SQL中的_(下划线)字符。如:正则表达式c.t将匹配cat、cut、cot等等。下面来看一个例子。

    文本:

    orders1.txt

    orders2.txt

    sales1.txt

    salesA.txt

    orders3.txt

    sales2.txt

    sales.txt

    正则表达式:sales.

    结果:

    orders1.txt

    orders2.txt

    【sales1】.txt

    【salesA】.txt

    orders3.txt

    【sales2】.txt

    【sales.】txt

    分析:正则表达式sales.将把由字符串sales和另外一个字条构成的文件名找出来,从结果可以看出,.可以匹配字母、数字以及它本身。7个文件中有4个与这个模式匹配。

    如果调用matchAndPrint方法,输出结果是:

    sales1

    salesA

    sales2

    sales.

    三、匹配特殊字符

    .字符在正则表达式中有着特殊的含义。如果模式里需要一个.,就要想办法来告诉正则表达式你需要的是.字符本身而不是它在正则表达式中的特殊含义。为此,必须在.前面加上\字符来对它进行转义。\也是一个元字符(metacharacter,表示这个字符有特殊含义,而不是字符含义本身)。来看下面这个例子。

    找出na或sa开头的文件,不管它后面跟的是一个什么数字。

    文本:

    sales.txt

    na1.txt

    na2.txt

    sa1.txt

    sanatxt.txt

    正则表达式:.a..txt

    结果:

    【sal】es.txt

    【na1】.txt

    【na2】.txt

    【sa1】.txt

    【sanatxt】.txt

    分析:这个正则把na1.txt、na2.txt、sa1.txt找出来了,但是还找到了2个意料之外的结果。因为.a..txt这个正则中的.字符将与任意一个字符匹配。要想匹配.字符本身,那么需要使用\转义。把正则修改成.a.\.txt,则能够满足我们的需求。

    注意:如果使用java,那么.a.\.txt这个正则表达式应该写成.a.\\.txt,因为\在java语言中也是一个转义字符。

    四、总结

    正则表达式通常简称为模式,它们其实是一些字符构成的字符串。这些字符可以是普通字符(纯文本)或元字符(有特殊含义的特殊字符)。这里介绍了如何使用普通字符和元字符去匹配单位字符。.可以匹配任何字符。\用来对字符进行转义。在正则表达式中,有特殊含义的字符序列总是以\字符开头。在接下来的文章中,我们将介绍如何匹配一组一组字符。

    PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

    JavaScript正则表达式在线测试工具:
    http://tools.jb51.net/regex/javascript

    正则表达式在线生成工具:
    http://tools.jb51.net/regex/create_reg

    希望本文所述对大家正则表达式学习有所帮助。

    您可能感兴趣的文章:
    • 正则表达式匹配用户密码
    • Javascript校验密码复杂度的正则表达式
    • 手机号码,密码正则验证
    • php password密码验证正则表达式(8位长度限制)
    • js正则实现的密码框简单制作,还可以替换成自己想用得符号
    • 密码强度检测函数(正则)
    • 正则表达式教程之位置匹配详解
    • 正则表达式教程之重复匹配详解
    • 正则表达式教程之匹配一组字符详解
    • JS正则匹配中文的方法示例
    • 正则匹配密码只能是数字和字母组合字符串功能【php与js实现】
    上一篇:正则表达式教程之操作符及说明详解
    下一篇:正则表达式教程之匹配一组字符详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    正则表达式教程之匹配单个字符详解 正则,表达式,教程,之,匹配,