栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

正则表达式(在Java中示范)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

正则表达式(在Java中示范)

        正则表达式(regular expression,简写为regex)是一个字符串,可以根据不同类型的数字字母组合的字符串用更加简洁的方式与其匹配,在字符串处理方面上,用处较大,所以熟练地运用它可以大程度地提高效率。

1、匹配

在Java中我们可以用String类的matches方法。在这里要与equals方法进行比较。matches方法可以匹配符合一个“模式”的字符串(也就是正则表达式),比如下面此结果便为true。

public class test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s = new String("aaaa");
		String regex = "a*";
		System.out.print(s.matches(regex));
	}

}
2、正则表达式的各种字符以及常用语法

注意反斜杠(/)字符,表示其需要//来表示

(1)、元字符
代码说明示例
.匹配除换行符以外的任意单个字符hello匹配"h.l.o"
w单词字符(字母/数字/下划线/汉字)等同于[a-z[A-Z][0-9]_]或[a-Za-z0-9_]a2_匹配"\w\w\w"
s空白字符(' '、't'、'n'、'r'、'f'均为空白字符)r匹配"\s"
d一位数字23匹配"\d3"
b单词的开始或结束
^字符串的开始(在集合字符里[^a]表示非(不匹配)的意思)It's a nice day today.匹配"^It's a nice day today."
$字符串的结束It's a nice day today.匹配"It's a nice day today.$"
(2)、反义字符
代码说明示例
W任意不是字母,数字,下划线,汉字的字符r匹配"\W"
S任意不是空白符的字符23匹配"2\S"
D任意非数字的字符d匹配"\D"
B不是单词开头或结束的位置
[^x]除了x以外的任意字符
[^hello]除了hello这几个字母以外的任意字符
(3)、量词符
代码说明示例
*重复0次或更多次aaa匹配"a*"
+重复1次或更多次a匹配"a+b*"
?重复0次或1次d匹配"d?"
{n}重复n次oop匹配"o{2}p"
{n,}重复n次或更多次oppo匹配"op{1,}o"
{n,m}重复n到m次(包括两端)aab匹配"a{2,9}b"

ps:可以使用括号让对象更加明确比如:opop匹配"(op){2}"

还可以用|来表示或

量词符都是贪婪量词,实行“贪婪分配”,下面内容会提及

(4)、常用的正则表达式语法 3、懒惰分配和贪婪分配

        贪婪分配是指在匹配过程中匹配尽可能多的字符(遇到重复的符合条件的字符串)例如:

public class test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s = new String("aabab");
		String regex = "a.*b";
		System.out.print(s.matches(regex));
	}

}

此会返回true。事实上,量词符均为贪婪量词,实行贪婪分配。倘若要使其实行懒惰分配,即:分配尽可能少的字符,则需要懒惰限定符(加问号)

代码说明
*?重复任意次,尽可能少重复
+?重复1次或更多次,尽可能少重复
??重复0次或1次,尽可能少重复
{n,m}?重复n到m次,尽可能少重复
{n,}?重复n次以上,尽可能少重复
4、替换和拆分字符串

        在Java的String类中有replaceAll、replaceFirst、split方法替换拆分字符串

(1)、replaceAll(替换全部)
public class test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.print("Java Java Java".replaceAll("v\w","wi"));
	}

}

 (2)、replaceFirst(只替换第一个)
public class test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.print("Java Java Java".replaceFirst("v\w","wi"));
	}

}

 (3)、split
String[] tokens = "abc1babala2hello3".split("\d");

拆分为abc、babala、hello并分别保存在tokens[0]、tokens[1]、tokens[2]中

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/780931.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号