主要部分就是正则表达式替换。所以我们先来
实现一个字符的替换,这里只使用: java.util.regex.Pattern和Java.util.regex.Matcher这两个
我们先来练习使用pattern:
代码如下:
package com.boardmx;
import java.util.regex.Pattern;
public class TestPattern {
public static void main(String[] args) {
String srcStr = "this is :: test String";
Pattern p = Pattern.compile("::");
String[] destStr = p.split(srcStr);
for (int i=0; i<destStr.length; i++){
System.out.println(destStr[i]);
}
}
}
从上面可以看到:
pattern的两个方法,分别是:Pattern.compile() 和 Pattern.split()
compile()方法将完成正则表达式的编译,而split将按正则表达式完成切分,这个个例子中
按照"::"这个符号将字符串切分成了两个字符串
输出一个结果:
this is
test String
从这里我们得学会了基本的Pattern入门。
ava.util.regex.Matcher的使用。
我们得先知道如何替换一个字符串才到达成我们的目的, orz....
在正则表达式compile()之我们就可以用pattern得到一个Matcher,例子如下:
package com.boardmx;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Replace {
public static void main(String[] args) {
String regEx = "\\{test\\}";
Pattern p = Pattern.compile(regEx);
String t = p.pattern();
Matcher m = p.matcher("this is my: {test} than is: {test}");
m.find();
String t2 = m.replaceFirst("korpton");
System.out.println(t);
System.out.println(t2);
}
}
这里产生的结果:
\{test\}
this is my: korpton than is: {test}
从这里我们可以看到 p.pattern()方法将返回compile()之后的结果。
并且我们在matcher中使用了replaceFirst()方法。
可以看到确实完成了替换,但是结果并不如意。因为还有一个并不有替换?
其实: 我们可有一个Matcher.replaceAll()可用。 XD
Matcher中的分组
确切的说应该是正则表达式的分组才对,这里还有一些反向引用,
在正则表达式中。小括号里的就遣桓龇肿?你可以使用自动的命名或给他一个名字
public class Main {
public static void main(String[] args) {
String str = "<!-- BEGIN row --> this is {test} and this is end <!-- END row -->";
String regEx = "<!-- BEGIN (\\w+) -->(.*)<!-- END \\1 -->";
Pattern p = Pattern.compile(regEx, Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(str);
if (m.find()){
int j = m.groupCount()+1;
for (int i=0; i < j; i++){
System.out.println(m.group(i));
}
}
}
}
我们可以看到结果:
<!-- BEGIN row --> this is {test} and this is end <!-- END row -->
row
this is {test} and this is end
在正则表达中,我们这样写:
<!-- BEGIN (\\w+) -->(.*)<!-- END \\1 -->
----------|↑分组1|--|↑分组2|----|↑反向引用分组1|----
从中可以看到我们可以通过 matcher.groupCount得知有多少个组:
而matcher.group(int)可以知道这个组中的内容,上例中:
0: 就是原字符。
1: 就是第一个小括号的内容。
2: 就是第二个小括号的内容。
分享到:
相关推荐
正则表达式在Java中的应用广泛,可以用于数据验证(如邮箱、电话号码格式),文本搜索替换,以及复杂的数据提取等任务。掌握正则表达式能够极大地提升处理字符串的能力。在实际开发中,可以根据需求选择合适的正则...
java中正则表达式Pattern类的应用,基本上用来验证之类的应用
### 浅谈Java中正则表达式的优化方法 在日常的软件开发过程中,正则表达式作为一种强大的文本处理工具被广泛应用于数据验证、文本搜索与替换等场景之中。尤其是在Java语言环境中,`java.util.regex`包提供了丰富的...
在实际应用中,正则表达式常用于数据验证,例如验证用户输入的邮箱、电话号码格式,或者在Web爬虫中提取网页上的特定信息。此外,它也可以用于统计代码行,例如在Java中,可以使用正则表达式来查找特定类型的文件并...
有重点和调理,一看就会了. 只要涉及java两个类
Java中的正则表达式是处理字符串的强大工具,用于查找、替换和验证文本模式。下面将详细介绍标题和描述中提到的一些核心概念和用法。 1. **^ 和 $** - `^` 表示字符串的开始,用于确保匹配的模式出现在行首。例如...
在本文中,我们将深入探讨Java中正则表达式的使用方法,以及如何通过它们来增强我们的代码功能。 首先,Java中的正则表达式支持是通过`java.util.regex`包提供的。这个包包含三个主要类:`Pattern`、`Matcher`和`...
下面将详细解释Java中的正则表达式实例,包括其基本概念、使用方法以及常见的应用。 1. **普通字符**: 在Java中,正则表达式中的普通字符如"a", "b"等,表示匹配这些字符自身。例如,`str1.split("abc")`会将字符...
### 浅析PHP中正则表达式的应用 #### 1. 引言 随着互联网的飞速发展,Web应用程序已经成为日常生活中不可或缺的一部分。在这样的背景下,确保网络内容的合法性和文明性变得尤为重要。正则表达式作为一种强大的文本...
本文主要介绍了关于Oracle中正则表达式的使用方法,下面话不多说了,来一起看看详细的介绍。 Oracle使用正则表达式离不开这4个函数:regexp_like、regexp_substr、regexp_instr、regexp_replace。 regexp_like 该...
这篇博客将深入探讨正则表达式在Java代码中的应用。 首先,创建一个正则表达式需要使用Pattern类。Pattern类的compile方法接受一个字符串参数,该字符串就是正则表达式。例如,创建一个匹配数字的正则表达式: ```...
本文将详细介绍Java中正则表达式的分组引用概念及其应用。 #### 分组引用的格式与原理 分组引用是指通过在正则表达式中使用圆括号`()`来定义一组字符或模式,并能够在之后的表达式中通过特定的方式重新引用这些...
掌握Java正则表达式可以极大地提高文本处理的效率和灵活性,它在数据验证、文本解析、日志分析等多个场景都有广泛应用。通过不断实践和学习,开发者可以更加熟练地运用这些技巧解决各种复杂问题。
接下来,我们将详细介绍Java中正则表达式的使用方法,并举例说明如何使用split()方法进行字符串查找,replace()方法进行字符串替换,以及如何使用Pattern和Matcher类来获取字符串中的特定部分。 首先是字符串查找,...
### JAVA正则表达式实例教程知识点详述 #### 一、正则表达式的定义与...通过以上知识点的学习和理解,开发者能够更加深入地了解 Java 中正则表达式的使用方法,并能有效地应用到实际项目中,解决复杂的文本处理问题。
在Java程序设计中,正则表达式是处理文本的强大工具,它允许我们对字符串进行模式匹配和操作。去除HTML标签是处理网页数据或用户输入时常见的需求之一,尤其是在从内容管理系统或文本编辑器中获取数据时。HTML标签的...
为了更好地理解和应用 Java 中的正则表达式,建议开发者在实际的编程工作中尝试编写正则表达式,并测试不同情况下的匹配行为。实践是掌握正则表达式的最好方式,同时还可以查找相关的教程或文档以加深理解。
本文将详细总结Java中正则表达式的用法,包括基础知识、创建正则表达式的方法、正则表达式中的特殊字符、预定义字符、边界匹配符以及表示匹配次数的符号,并提供一些实例来帮助理解和应用。 首先,让我们了解一下...