很多时候,我们在前端页面进行数据校验的时候使用到正则表达式.但是正则表达式还有更强大的地方.比如,很邪恶地去抓取别人的页面数据.这时候,就是用Java进行正则表达式的时候了.
public static void main(String[] args) {
/*
* 以下是对Matcher类的方法的简介
* Matcher appendReplacement(StringBuffer sb,String replacement) 将当前匹配子串替换为指定字符串,并且将替换后的子串以及其之前到上次匹配子串之后的字符串段添加到一个StringBuffer对象里。
* StringBuffer appendTail(StringBuffer sb) 将最后一次匹配工作后剩余的字符串添加到一个StringBuffer对象里。类包里的解释是:实现非终端追加和替换步骤。
*
* int end() 返回当前匹配的子串的最后一个字符在原目标字符串中的索引位置。
* int end(int group) 返回与匹配模式里指定的组相匹配的子串最后一个字符的位置。
* boolean find() 尝试在目标字符串里查找下一个匹配子串。
* boolean find(int start) 重设Matcher对象,并且尝试在目标字符串里从指定的位置开始查找下一个匹配的子串。
* String group() 返回当前查找而获得的与组匹配的所有子串内容
* String group(int group) 返回当前查找而获得的与指定的组匹配的子串内容
* int groupCount() 返回当前查找所获得的匹配组的数量。
* boolean lookingAt() 检测目标字符串是否以匹配的子串起始。
* boolean matches() 尝试对整个目标字符展开匹配检测,也就是只有整个目标字符串完全匹配时才返回真值。
* Pattern pattern() 返回该Matcher对象的现有匹配模式,也就是对应的Pattern对象。
* String replaceAll(String replacement) 将目标字符串里与既有模式相匹配的子串全部替换为指定的字符串。
* String replaceFirst(String replacement) 将目标字符串里第一个与既有模式相匹配的子串替换为指定的字符串。
* Matcher reset() 重设该Matcher对象。
* Matcher reset(CharSequence input) 重设该Matcher对象并且指定一个新的目标字符串。
* int start() 返回当前查找所获子串的开始字符在原目标字符串中的位置。
* int start(int group) 返回当前查找所获得的和指定组匹配的子串的第一个字符在原目标字符串中的位置。
*
* 下面用例子来介绍这些方法。
*/
/**
* 测试Matcher类中以下三个方法:三个方法都将返回一个布尔值来表明成功与否
* matches():方法尝试对整个目标字符展开匹配检测,也就是只有整个目标字符串完全匹配时才返回真值。
* lookingAt():方法将检测目标字符串是否以匹配的子串起始。
* boolean find():方法尝试在目标字符串里查找下一个匹配子串。
* boolean find(int start): 重置此匹配器,然后尝试查找匹配该模式、从指定索引开始的输入序列的下一个子序列。
* int start():返回以前匹配的初始索引。
* int start(int group) : 返回在以前的匹配操作期间,由给定组所捕获的子序列的初始索引。
* int end():返回最后匹配字符之后的偏移量。
* int end(int group):返回在以前的匹配操作期间,由给定组所捕获子序列的最后字符之后的偏移量。
*/
Pattern p = Pattern.compile("[\u4e00-\u9fa5]");
String input="<a href='http://www.baidu.com'>百度啊</a> <div>Hi All</div>";
Matcher m = p.matcher(input);
//只有整个目标字符串完全匹配时才返回真 完全匹配
System.out.println(m.matches());
StringBuffer sb = new StringBuffer();
//查找下一个匹配子串
while(m.find()){
System.out.println("匹配了:"+m.group());
m.appendReplacement(sb, "hello");
}
m.appendTail(sb);
System.out.println(sb.toString());
String input2 = "aaBBcccBBBddddBBBBeeeeeBBBBBfffff";
Pattern pattern = Pattern.compile("B{2}");
//find() 尝试查找与该模式匹配的输入序列的下一个子序列。
Matcher matcher = pattern.matcher(input2);
System.out.println("需要被匹配的字符串是:"+input2+"长度是:"+input2.length()+"\n");
while(matcher.find()){
System.out.println("开始匹配位置是:"+matcher.start());
System.out.println(matcher.group());
System.out.println("结束匹配位置是:"+matcher.end()+"\n");
}
//find(int start) 重置此匹配器,然后尝试查找匹配该模式、从指定索引开始的输入序列的下一个子序列。
//这里使用的是if 也就是每次调用find都是重start开始匹配,用while则死循环。
if(matcher.find(3)){
System.out.println("开始匹配位置是:"+matcher.start());
System.out.println("从第3个位置开始匹配捕获的子字符串是:"+matcher.group());
}
}
分享到:
相关推荐
为了帮助开发者更好地掌握Java正则表达式技术,我们提供了一系列的Java正则表达式技巧大全,包括《Java正则表达式技巧大全》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧...
Java正则表达式匹配工具是IT领域中一种强大的文本处理工具,它利用正则表达式(Regular Expression)的规则来查找、替换或者提取文本中的特定模式。正则表达式是一种特殊的字符序列,能够帮助程序员或者用户高效地...
### 常用Java正则表达式知识点 #### 一、引言 正则表达式是一种强大的工具,用于处理文本并查找模式。多种编程语言,包括Perl、PHP、Python、JavaScript以及Java等均内置了对正则表达式的支持。本文将详细介绍Java...
在Java中使用正则表达式来判断字符串是否符合整数、小数或实数的格式是一种常见且有效的做法。在编程中,我们经常需要对输入的字符串进行格式验证,以确保它们符合预期的数值格式,尤其是在处理财务数据、用户输入...
- 正则表达式中的特殊字符需要转义,如`\d`应写为`\\d`。 - 如果正则表达式在字符串中,需要额外的转义,如`"\\d\\d"`。 - 贪婪与非贪婪匹配:默认情况下,`*`, `+`, `?`是贪婪的,会尽可能多地匹配。如果在后面加上...
本篇将围绕“使用Java正则表达式分析处理日志”这一主题,探讨如何利用Java的正则表达式功能来提取、过滤和操作日志数据。 首先,我们需要理解正则表达式的基本概念。正则表达式(Regular Expression)是一种模式...
本篇将深入探讨Java中的字符串、正则表达式及其在实际编程中的详细实例代码。 1. **字符串基础** - Java中的字符串是不可变的,这意味着一旦创建了字符串对象,就不能更改其内容。这由`final`关键字确保,提高了...
2. java正则表达式的使用:java使用正则表达式可以实现手机号的匹配操作。正则表达式可以定义模式来匹配字符串,例如,"^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$"这个正则表达式可以匹配大多数的手机号码。 3...
Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许程序员通过模式匹配来查找、替换或分割文本。本教程将深入讲解Java中的正则表达式,并提供丰富的实例来帮助开发者理解和应用这些概念。 1. 正则...
在Java中,我们可以使用RE2J库,它是Google开发的一个高效、安全的正则表达式引擎,支持构造有限状态自动机。虽然RE2J主要设计用于正则表达式的匹配,但通过它的内部机制,我们可以间接地实现字符串生成。 下面是一...
`在正则表达式中具有特殊含义,分别代表零个或多个、一个或多个、零个或一个前一个字符。 4. **范围处理** - 使用方括号`[]`定义字符范围,例如`[a-zA-Z]`表示匹配任何字母。 5. **预定义字符类** - `\s`:匹配...
"PB正则表达式"标签直接指向了我们讨论的主题,即在PowerBuilder中使用正则表达式。"PBRegExp"可能是作者创建的一个类或者函数库,用于封装正则表达式的操作。"正则表达式"标签进一步强调了我们要探讨的核心技术。...
在Java中使用Xeger,首先需要引入Apache Commons Text库。你可以通过Maven或Gradle将依赖添加到项目中。对于Maven,可以在pom.xml文件中加入以下依赖: ```xml <groupId>org.apache.commons <artifactId>commons...
2. **正则表达式中的特殊字符** 特殊字符是具有特定含义的字符,例如`\`用于转义,使得原本具有特殊意义的字符如`(`、`)`、`.`等变成普通字符。其他特殊字符如`\d`代表数字,`\s`代表空白字符,`\w`代表单词字符...
这个合集提供的HTML和Java正则表达式实例,为开发者提供了一个快速参考的工具,帮助他们在开发过程中快速有效地实现数据验证功能。理解并熟练运用这些正则表达式,对于提高代码质量和用户体验都有极大的帮助。在实际...
在Java中,我们通常使用`Pattern`和`Matcher`两个类来操作正则表达式。下面是一个简单的例子: ```java import java.util.regex.*; public class RegexExample { public static void main(String[] args) { // ...
Java正则表达式验证IP地址是指使用Java语言中的正则表达式来验证IP地址是否符合标准。IP地址是指在网络通信中用来标识设备的地址,它是一种逻辑地址,通过它可以找到网络中的设备。在Java中,可以使用正则表达式来...
### 使用Java正则表达式实现一个简单的身份证号码验证 #### 一、背景介绍 身份证号码是中国公民的身份标识,由15位或18位数字组成(早期为15位,后改为18位)。其中,第18位是校验码,可能是数字0~9或者大写字母X。...