• Regex阅读笔记(五)java操作篇


     首先一个demo程序

    Java的正则表达式包为java.util.regex,主要是使用其中的Pattern和Matcher.

    groupCount方法时候都可调用,而大多数方法都必须在匹配尝试成功之后才可调用.

    主要的方法有:

    boolean find()

    返回的boolean值表示是否能找到匹配,如果有多次调用,每次都在上次的匹配位置之后尝试新的匹配.

    public class Regex {
        public static void main(String[] args){
            String regex = "\w+";
            Pattern pattern = Pattern.compile(regex);
            String str = "this is my";
            Matcher matcher = pattern.matcher(str);
            while(matcher.find()){
                String matchedText = matcher.group();
                int matchedFrom = matcher.start();
                int matchedTo = matcher.end();
                System.out.println(matchedFrom+" "+matchedTo);
                System.out.println(matchedText);
            }
    

    boolean find(int offset)

    如果指定了整型参数,匹配尝试会从距离目标字符串开头offset个字符的位置开始,如果超出会报错,这种形式的find不会受当前检索范围的影响.

    boolean matches()

    返回正则表达式是否能完全匹配目标字符串中检索范围的那段文本.

    boolean lookingAt()

    返回正则表达式能否在当前目标字符串的当前检索范围中找到匹配.

    group()

    返回前一次应用正则表达式的匹配文本.

    groupCount()

    返回捕获型括号的数目

    group(int num)

    返回对应捕获型括号匹配的内容,group(0)就等于group()

    输出分别是:

    this is
    2
    this
    is

    int start(int num)

    返回编号为num的捕获型括号所匹配文本的起点在目标字符串中的绝对偏移值.

    int start()

    返回整个匹配起点的绝对便宜值,就相当于start(0)

    int end 与 int end(int num)对应于start

    replace示例:

    String myText = "Before Java 1.5 was Java 1.4.2 After Java 1.5 is Java 1.6";
    String myRegex = "\bJava\s*1\.([56])\b";
    Pattern p = Pattern.compile(myRegex);
    Matcher m = p.matcher(myText);
    System.out.println(m.replaceAll("Java $1.0"));
    

     如果只需要替换第一次出现的文本,可以使用replaceFirsr而不是replaceAll.此外明确知道目标字符串只存在一个匹配时,使用replacrFirst可以提高 效率.

  • 相关阅读:
    产生WM_PAINT 消息
    模板作为模板的参数
    转:网络游戏同步原理荟萃
    一个隐晦的c++语法问题
    Winbind authentication against active directory
    In Place Upgrade of CentOS 6 to CentOS 7
    How To mount/Browse Windows Shares【在linux{centos}上挂载、浏览window共享】
    File System Shell
    Administration Commands
    User Commands
  • 原文地址:https://www.cnblogs.com/tuifeideyouran/p/4229504.html
Copyright © 2020-2023  润新知