0
点赞
收藏
分享

微信扫一扫

正则表达式在Java里面的使用


相关的包和类

相关的类都是位于java.util.regex包下面
Pattern类
这是正则表达式的一个编译的类,就是将正则表达式封装成一个类,这个没有构造方法,只能静态方法创建对象
Matcher类
这个是将正则表达式Pattern类和要匹配的字符串关联起来的类

注意一下,就是Java语言的特殊,在正则表达式里面,两个反斜杠才能表示转义字符,
所以前面学习的正则表达式,如果要用在Java里面,单斜杠都要写成两个斜杠

里面有很多的方法和常量,下面展示一些常用的

package regularExpression;

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

public class Test1
{
public static void main(String[] args)
{
/*
* matches()方法
* matches()方法是将这个表达式和整个字符串进行匹配
* 下面明显返回true,因为这个字符串全部都是字母数字或_
*/
Pattern p1=Pattern.compile("\\w+");
Matcher m1 = p1.matcher("asdsfsbajd");
System.out.println(m1.matches());

/*
* find()和group()方法
*
* find()方法是找和该模式匹配的下一个子序列
* find不是扫描这个字符串,而是找到符合该序列的子字符串就结束
* 并且保存这个位置,下一次的find就会根据位置,找位置后面的是否还有符合的
*
* group()方法是返回已经匹配的子字符串
* group还能对表达式里面的进行分组处理
*/
Pattern p2=Pattern.compile("\\w+");
Matcher m2 = p2.matcher("asdsf@sb&&ajd");
while(m2.find())
{
System.out.println(m2.group());
}
System.out.println("======");

/*
* group()的分组处理
* 下面代码结果如下
* asd123
* asd123
* asd
* 123
* sbs456
* sbs456
* sbs
* 456
* ajd789
* ajd789
* ajd
* 789
* 这里就是group的分组作用,group(0)和group()一样,都是显示匹配的整个子序列
* group(n) 代表的是第几个分组里面匹配的内容
*/
Pattern p3=Pattern.compile("([a-z]+)([0-9]+)");
Matcher m3 = p3.matcher("asd123@sbs456&&ajd789");
while(m3.find())
{
System.out.println(m3.group());
System.out.println(m3.group(0));
System.out.println(m3.group(1));
System.out.println(m3.group(2));
}

/*
* 正则表达式的替换
* 结果:asd***@sbs***&&ajd***
* 这里会将数字都替换成*,替换生成新的字符串,原来的不会影响
*/
Pattern p4=Pattern.compile("\\d");
Matcher m4 = p4.matcher("asd123@sbs456&&ajd789");
String str = m4.replaceAll("*");
System.out.println(str);

/*
* 正则表达式执行复杂的分割
* 结果:[asd, @sbs, &&ajd]
*/
String s="asd123@sbs456&&ajd789";
String[] split = s.split("\\d+");
System.out.println(Arrays.toString(split));
}
}


举报

相关推荐

0 条评论