zoukankan      html  css  js  c++  java
  • Java学习之正则表达式

      Java正则表达式字符串模式。

      正则表达式可以用来搜索、编辑和处理文本。

      正则表达式不尽限于一种语言,但在每一种语言中又细微的差别。

    java.util.regex包中主要有这3个类:

    • Pattern类:

      pattern对象是一个正则表达式的编译表示。Pattern类没有公共构造方法。要创建一个Pattern对象,你必须首先调用其公共静态编译方法,它返回一个Pattern对象。该方法接受一个正则表达式作为它的第一个参数。

    • Matcher类:

      Matcher对象是对输入字符串进行解释和匹配操作的引擎。与Pattern类一样,Matcher也没有公共构造方法。你需要调用Pattern对象的matcher方法来获得一个Matcher对象。

    • PatternSyntaxException:

      PatternSyntaxException是一个非强制异常类,它表示一个正则表达式模式中的语法错误。

    捕获组

    捕获组是把多个字符当一个单独单元进行处理的方法,它通过对括号内的字符分组来创建。

    例如,正则表达式(dog) 创建了单一分组,组里包含"d","o",和"g"。

    捕获组是通过从左至右计算其开括号来编号。例如,在表达式((A)(B(C))),有四个这样的组:

    • ((A)(B(C)))
    • (A)
    • (B(C))
    • (C)

    可以通过调用matcher对象的groupCount方法来查看表达式有多少个分组。groupCount方法返回一个int值,表示matcher对象当前有多个捕获组。

    还有一个特殊的组(组0),它总是代表整个表达式。该组不包括在groupCount的返回值中。

    正则表达式语法:用符号来描述书写规则: /中间写正则表达式/     |:代表或者    ():优先级

    字符 说明

    将下一字符标记为特殊字符、文本、反向引用、八进制的转义符。例如“n”匹配“n”,“ ”匹配换行符

    “ ”匹配制表符,“(”匹配“(”

    ^ 匹配开头;/^ve/ 匹配以ve开头的
    $ 匹陪结尾 ;/ve$/  以ve结尾的
    d 任意一个数字
    D 非数字字符匹配。等效于 [^0-9]。
    w 任意一个数字或字母
    s 任意字符串
    {n} 把左边的表达式重复n遍
    {m ,n}   把左边的表达式重复至少m遍,至多n遍
    {m,} 把左边的表达式重复至少m遍,至多不限
    + 左边的表达式,至少出现一次,至多不限,相当于{1,}
    * 左边的表达式,至少出现0次,至多不限,相当于{0,}
    左边的表达式,至少出现0次,至多1次,相当于{0,1}
    [a,b,c] 只能取方括号中内容之一,[a-z]从a~z之间取任取一个字母,[1-9]从1~9数字中任取一个
    . 匹配除" "之外的任何单个字符
    [^xyz] 反向字符集。匹配未包含的任何字符
     匹配一个字边界,即字与空格间的位置。例如,"er"匹配"never"中的"er",但不匹配"verb"中的"er"
    B 非字边界匹配。"erB"匹配"verb"中的"er",但不匹配"never"中的"er"。
    cx 匹配 x 指示的控制字符。例如,cM 匹配 Control-M 或回车符。x 的值必须在 A-Z 或 a-z 之间。如果不是这样,则假定 c 就是"c"字符本身。
    f 换页符匹配。等效于 x0c 和 cL。
    匹配一个回车符。等效于 x0d 和 cM。
    s 匹配任何空白字符,包括空格、制表符、换页符等。与 [ f v] 等效。
    S 匹配任何非空白字符。与 [^ f v] 等效。
    w 匹配任何字类字符,包括下划线。与"[A-Za-z0-9_]"等效。
    W 与任何非单词字符匹配。与"[^A-Za-z0-9_]"等效。
    un 匹配 n,其中 n 是以四位十六进制数表示的 Unicode 字符。例如,u00A9 匹配版权符号 (©)。

    Matcher类的方法

    索引方法

    索引方法提供了有用的索引值,精确表明输入字符串中在哪能找到匹配:

    序号方法及说明
    1 public int start() 
    返回以前匹配的初始索引。
    2 public int start(int group)
     返回在以前的匹配操作期间,由给定组所捕获的子序列的初始索引
    3 public int end()
    返回最后匹配字符之后的偏移量。
    4 public int end(int group)
    返回在以前的匹配操作期间,由给定组所捕获子序列的最后字符之后的偏移量。

     

    研究方法

    研究方法用来检查输入字符串并返回一个布尔值,表示是否找到该模式:

    序号方法及说明
    1 public boolean lookingAt() 
     尝试将从区域开头开始的输入序列与该模式匹配。
    2 public boolean find() 
    尝试查找与该模式匹配的输入序列的下一个子序列。
    3 public boolean find(int start)
    重置此匹配器,然后尝试查找匹配该模式、从指定索引开始的输入序列的下一个子序列。
    4 public boolean matches() 
    尝试将整个区域与模式匹配。

  • 相关阅读:
    Java日志框架Slf4j+Log4j入门
    Pandas常用函数入门
    Noip2018 倒计时
    【缩点】洛谷P3387
    用Visio进行数据库建模、设计和实现
    SQL Server 教程
    MS TransactSQL 存储过程的解密算法
    泛型编程
    网络实现语音
    Visual C++ 例程下载
  • 原文地址:https://www.cnblogs.com/sdlzspl/p/7298041.html
Copyright © 2011-2022 走看看