在web开发中,字符串的处理往往最为麻烦,处理的过程中,正则表达式用得非常频繁,最常见的如登陆校验,注册校验,以及邮箱等信息验证Pattern 类的对象是正则表达式编译后在中的表示形式,因此正则表达式的对象必须先编译为Pattern对象,然后再用Pattern对象创建Matcher对象,执行所匹配的状态封装在Matcher对象里面;多个Matcher对象可以共享一个Pattern对象,如:
Pattern p=Pattern.compile("a*b");//把一个字符串编译成Pattern对象;
Matcher m=p.matcher("aaaaaab");//使用Pattern对象创建Matcher对象;
boolean b=m.matches();//返回true;
上面定义的Pattern对象可以多次被使用,Pattern是不可变类,可供多个线程安全使用。
Matcher 类提供了如下常用的方法:
find:返回目标字符串是否包含与Pattern匹配的子串(每次调用都是在上一次find方法找到的匹配字符串后开始查找)。
group:返回上一次与Pattern匹配的子串。:
start:返回上一次与Pattern匹配的子串在目标字符串中开始位置。
end:返回上一次与Pattern匹配的子串在目标字符串中结束位置加1。
lookingAt:返回目标字符串前面部分与Pattern是否匹配。
matches:返回整个目标字符串是否与Pattern匹配。
reset:可一将现有的Matcher对象应用到一个新的字符序列。
下面程序演示了各个方法的用途:
import java.util.regex.*;
public class FindGroup
{//演示findf方法该方法可以传入一个参数
public static void main(String[] args)
{
Matcher m = Pattern.compile("\\w+")
.matcher("Java is very easy!");
while(m.find())
{
System.out.println(m.group());
}
int i = 0;
while(m.find(i))
{
System.out.print(m.group() + "\t");
i++;
}
}
}
运行结果:
Java
is
very
easy
Java ava va a is is s very very ery ry y easy easy asy sy y
从上面的结果可以看出,find方法依次查找字符串中与Pattern匹配的子串,一旦找到对应的子串,下次调用find方法会接着向下查找。除此之外find方法还可以传入一个带Int类型的参数,find从该int索引处向下找。
start和end主要确定子串在目标字符串中的位置如下:
import java.util.regex.*;
public class StartEnd
{
public static void main(String[] args)
{
String regStr = "Java is very easy!";
System.out.println("目标字符串是:" + regStr);
Matcher m = Pattern.compile("\\w+")
.matcher(regStr);
while(m.find())
{
System.out.println(m.group() + "子串的起始位置:" + m.start()
+ ",其结束位置:" + m.end());
}
}
}
输出结果:
is子串的起始位置:5,其结束位置:7
very子串的起始位置:8,其结束位置:12
easy子串的起始位置:13,其结束位置:17
matches 和lookingAt相似,但前者要求匹配整个字符串,后者只要字符串因Pattern开头就会返回true.
看下面例子:
import java.util.regex.*;
public class TestMatches
{
public static void main(String[] args)
{
String[] mails =
{
"kongyeeku@163.com" ,
"kongyeeku@gmail.com",
"ligang@oneedu.cn",
"wawa@abc.xx"
};
String mailRegEx = "\\w{3,20}@\\w+\\.(com|org|cn|org|net|gov)";
Pattern mailPattern = Pattern.compile(mailRegEx);
Matcher matcher = null;
for (String mail : mails)
{
if (matcher == null)
{
matcher = mailPattern.matcher(mail);
}
else
{
matcher.reset(mail);
}
if (matcher.matches())
{
System.out.println(mail + "是一个有效的邮件地址!");
}
else
{
System.out.println(mail + "不是一个有效的邮件地址!");
}
}
}
}
上面程序创建了一个邮件地址Pattern,接着这个Pattern与多个邮件地址进行匹配,当程序中的Matcher为Null时候创建一个Matcher对象,一旦Matcher对象创建后程序就调用Matcher的reset方法将该Matcher应用于新的字符序列。
分享到:
相关推荐
为了帮助开发者更好地掌握Java正则表达式技术,我们提供了一系列的Java正则表达式技巧大全,包括《Java正则表达式技巧大全》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧...
Java正则表达式是Java编程语言中用于处理字符串的强大工具,它基于模式匹配的概念,能够高效地进行文本搜索、替换和解析。在Java中,正则表达式主要通过`java.util.regex`包来实现,提供了Pattern和Matcher两个核心...
8. java正则表达式技巧大全:文章最后还提供了几个有关于java算法相关的内容,例如《Java正则表达式技巧大全》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java...
Java正则表达式是Java语言中用于处理字符串的强大工具,它允许程序员进行复杂的字符串匹配、查找和替换操作。正则表达式(Regular Expression)是一种模式匹配语言,通过特定的语法来描述字符串的模式,用于在文本中...
在Java编程语言中,处理字符串和正则表达式是一项常见的任务。正则表达式是一种强大的文本模式匹配工具,可以用于搜索、替换或者提取符合特定规则的字符串。在本篇文章中,我们将深入探讨如何利用Java中的Xeger和...
Java正则表达式匹配工具是IT领域中一种强大的文本处理工具,它利用正则表达式(Regular Expression)的规则来查找、替换或者提取文本中的特定模式。正则表达式是一种特殊的字符序列,能够帮助程序员或者用户高效地...
本篇将围绕“使用Java正则表达式分析处理日志”这一主题,探讨如何利用Java的正则表达式功能来提取、过滤和操作日志数据。 首先,我们需要理解正则表达式的基本概念。正则表达式(Regular Expression)是一种模式...
Java 正则表达式对象实现正则获取功能 在 Java 中,使用正则表达式对象可以实现各种字符串匹配和提取操作。正则表达式对象主要通过 Pattern 和 Matcher 两个类来实现。下面详细介绍如何使用正则表达式对象实现正则...
1. **正则表达式之道** 这个主题可能涵盖了正则表达式的基础概念,包括元字符、字符类、量词和分组。元字符如`.`代表任意字符,`^`表示行首,`$`表示行尾,`*`表示零次或多次,`+`表示一次或多次,`?`表示零次或一...
java通过正则表达式匹配获取MAC(支持windows和Linux)
本资料"java_zhengze.rar"提供了对Java正则表达式的详细讲解,包括基本概念、元字符、预定义字符类以及各种匹配操作,对于Java开发者来说是一份非常实用的学习资源。 首先,我们来了解一下正则表达式的基石——元...
Java正则表达式虽然与其他语言的正则表达式有相似之处,但它们并不完全相同,有自己的语法和特性。使用Java正则表达式的好处在于它能显著提高编程效率,例如验证电子邮件地址这样的任务,传统方法可能需要大量的代码...
### 常用Java正则表达式知识点 #### 一、引言 正则表达式是一种强大的工具,用于处理文本并查找模式。多种编程语言,包括Perl、PHP、Python、JavaScript以及Java等均内置了对正则表达式的支持。本文将详细介绍Java...
Java正则表达式验证IP地址 Java正则表达式验证IP地址是指使用Java语言中的正则表达式来验证IP地址是否符合标准。IP地址是指在网络通信中用来标识设备的地址,它是一种逻辑地址,通过它可以找到网络中的设备。在...
### 使用Java正则表达式实现一个简单的身份证号码验证 #### 一、背景介绍 身份证号码是中国公民的身份标识,由15位或18位数字组成(早期为15位,后改为18位)。其中,第18位是校验码,可能是数字0~9或者大写字母X。...
Xeger的工作原理是通过解析正则表达式,然后生成与之匹配的随机字符串。例如,如果你有一个正则表达式"^[a-zA-Z0-9]{5,10}$",它表示一个由5到10个字母或数字组成的字符串。Xeger会根据这个规则生成长度在5到10之间...
在IT领域,正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,它能够进行复杂的模式匹配、查找、替换等操作。在本话题中,我们将探讨如何使用PowerBuilder 11.5这一经典的开发环境来实现正则...
Java正则表达式是编程语言Java中的一个强大工具,它用于模式匹配、数据验证和文本检索替换。在Java中,正则表达式是通过java.util.regex包提供的接口和类来实现的。`regex-smart.jar`这个库显然是为了简化开发者在...
java 使用正则表达式验证电话号码的格式 java 使用正则表达式验证电话号码的格式
在Java中使用正则表达式来判断字符串是否符合整数、小数或实数的格式是一种常见且有效的做法。在编程中,我们经常需要对输入的字符串进行格式验证,以确保它们符合预期的数值格式,尤其是在处理财务数据、用户输入...