`

正则表达式中的find方法和appendReplacement()方法解析

阅读更多

查找的下标。
不管是查找还是替换,每次执行了查找或者替换方法后,查找下标都会移动。start方法可以得到现在查找到哪个字符的位置。
(find()每次只匹配一个符合的子字符串  start方法可以提取到以及匹配到哪里了,也就是下标。)

replaceAll()会将所有满足的字符串都替换,他会将查找的下标移到最后满足的位置,
所以当调用了replaceAll()后,在调用find()就会从最后满足的位置的后一个位置查找,也就找不到了。
 
替换当前find位置
1、 Matcher appendReplacement(StringBuffer sb, String replacement)
          实现非终端添加和替换步骤。
 
方法 1   将满足的以及前面的所有字符串赋给sb ,后面不符合的不管。
调用这个方法前需要先find()
如果找到了才可以替换
方法1是如果找到了将当前这个find的位置替换,然后将包括这个字符串以及以前的字符串给sb这个缓存字符串,它也会将查找下标移动

2、StringBuffer appendTail(StringBuffer sb)
          实现终端添加和替换步骤。
将后面全部不满足的字符串,添加到sb的后面

 

********将符合要求的(不区分大小写)并且第奇数个位置额字符替换掉*************

 

package com.test;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class TestMatcher {

 /**
  * @param args
  */
 public static void main(String[] args) {
  String s = "i java jAva  java java java  java  you heate jAva asdfasdaf";
  Pattern pt = Pattern.compile("java", Pattern.CASE_INSENSITIVE);
  Matcher mc = pt.matcher(s);
  int i = 0;
  int num = 0;
  StringBuffer buf = new StringBuffer();
  while (mc.find()) {
   mc.find();
   if (num++ % 2 == 0) {
    mc.appendReplacement(buf, "JAVA");
   }
  }
  mc.appendTail(buf);
  System.out.println(buf);
  System.out.println(i);

 }

}

分享到:
评论

相关推荐

    精通正则表达式基于.NET ASP PHP JSP JavaScript

    RegexApplication/Default.aspx 正则表达式类的应用 RegexApplication/GetPageHtmlData.aspx 获取网页的内容 第10章(/10/) ASPNETValidator/Compare.aspx 比较验证 ASPNETValidator/...

    正则表达式

    正则表达式是一种强大的文本处理工具,能够帮助我们完成复杂的字符串搜索、替换和解析任务。在Java编程中,正则表达式主要通过`java.util.regex`包中的`Pattern`和`Matcher`类来实现。本文将详细阐述如何在Java中...

    java正则表达式实例教程

    - Java 中的正则表达式功能主要通过 `java.util.regex` 包下的 `Pattern` 类和 `Matcher` 类来实现。 - 首先导入所需的包: ```java import java.util.regex.Pattern; import java.util.regex.Matcher; ``` 2...

    JAVA正则表达式实例教程 共17页.docx

    【JAVA正则表达式实例教程】是一份详细的教学文档,主要涵盖了正则表达式的基本概念、常用符号、实例解析以及Java中如何运用正则表达式。以下是对这些内容的详细阐述: 1. **正则表达式基础知识** - **定义**:...

    java正则表达式Pattern,Matcher

    在Java编程语言中,正则表达式(Regular Expression)是一种强大的文本处理工具,它能够帮助开发者进行复杂的字符串搜索和替换操作。Java中的正则表达式功能主要通过`java.util.regex`包来实现,该包提供了两个核心...

    Java基于正则表达式实现的替换匹配文本功能【经典实例】

    在给定的实例中,我们看到如何使用Java的`Pattern`和`Matcher`类来实现基于正则表达式的文本替换功能。以下是对这个经典实例的详细解析: 首先,我们需要导入`java.util.regex.Matcher`和`java.util.regex.Pattern`...

    操作 compile 解析编译模式,第二个参数大小写是否敏感

    在 Java 中,`java.util.regex` 包提供了用于执行正则表达式操作的类,包括 `Pattern` 和 `Matcher`。 #### Pattern 类详解 `Pattern` 类是用于编译正则表达式的类。它可以将正则表达式编译为可执行的形式,以便...

    JAVA语言编程中如何使用表达式

    通过示例代码和解释,我们深入了解了如何利用Java中的`Pattern`、`Matcher`以及`String`类来进行正则表达式的编译、匹配和操作。此外,还介绍了如何处理特殊字符、找出匹配结果的位置、进行字符串替换以及使用正则...

    java代码-正则去除HTML代码中的SCRIPT标签

    在上述代码中,`removeScriptTags`方法使用了正则表达式来查找并替换所有的`<script>`标签。`Pattern.compile`用于编译正则表达式,`DOTALL`标志使`.`可以匹配任何字符,包括换行符。`Matcher`对象的`find`方法遍历...

    wap代码 html过滤器(java)

    随着移动互联网技术的不断进步和HTML5等现代标准的普及,虽然WAP技术已逐渐淡出历史舞台,但该过滤器的实现思路和方法仍然为理解不同Web技术间的转换和兼容性问题提供了有价值的参考。 总之,“wap代码html过滤器...

    java web笔试题,很全

    Java Web 笔试题目主要涉及了数据库操作和正则表达式替换等方面的知识,下面将对这些知识点进行详细解析。 首先,我们来看第一个问题,如何转置数据库表。这是一个关于SQL查询的问题,要求只使用一条语句来实现二维...

    【Java】将Markdown格式文本转换为纯文本

    总结起来,将Markdown格式文本转换为纯文本在Java中可以通过正则表达式或者使用专门的解析库来实现。尽管直接的解决方案可能较少,但通过理解和利用Markdown的规则,我们可以构建自己的转换逻辑,或者选择现有的库来...

    2012androidQQ表情的实现

    这可以通过正则表达式实现: ```java String text = "你好,:-)!"; Pattern pattern = Pattern.compile("\\:\\-\\)|\\;\\-\\)|\\:\\)|\\:\\-\\(|..."); // 添加更多表情代码 Matcher matcher = pattern.matcher...

Global site tag (gtag.js) - Google Analytics