Java 正则表达式学习

正则表达式在Java中的语法

Java正则表达式的语法和一般的正则表达式语法差不多,但有一点需要注意,就是 \ 的用法,简单来说就是 \ 的数量要多一倍。
\\d 表示一个数字
\\\\ 表示一个被转义的普通 \

PatternMacher 的使用

判断是否匹配

	String content = "I am studying Regex";
	String regex = ".*studying.*";
	boolean isMatch = Pattern.matches(regex, content);
	//or
	Pattern pattern = Pattern.compile(regex); 
	Matcher matcher = pattern.matcher(content); 
	boolean isMatch = matcher.find();

获取匹配值 和 匹配结果的各项数据

  • find()
	//每调用一次find()方法,matcher会去寻找与表达式匹配的下一个子序列
	if(matcher.find()) {
		System.out.println(matcher.group()); //匹配结果
	}
  • start() 和 end()
	if(matcher.find()) {
		System.out.println(matcher.start()); //此次匹配的子序列的开始索引,包含次此批匹配子序列 [
		System.out.println(matcher.end()); //此次匹配的子序列的结束索引,不包此次含匹配子序列 )
	}
  • appendReplacement(StringBuffer sb, String replacement) 和 appendTail(StringBuffer sb)
	//用于替换原内容中的匹配值
	StringBuilder sb = new StringBuilder();
	while(matcher.find()) {
		matcher.appendReplacement(sb, replacement);
		//相当于
		//sb.append(上次匹配的end()到这次匹配的start()之间的内容,即[last.end(), now.start)
		//再加上 sb.append(matcher.group() => replacement) 此次匹配被替换的值
	}
	matcher.appendTail(sb);
	//相当于sb.append(最后一次匹配的end()到内容结束之间的内容,即[last.end(), content.length() -1)
	//如此可以完成对内容中所有的匹配子序列进行替换

	//如果将while换成if,则是对第一次匹配子序列进行替换

  • replaceFirst() 和 replaceAll()

      	也是匹配替换的方法,分别是替换第一次匹配结果 和 替换所有匹配结果
    
  • group()

  	String regx = "(a)(b(c))(d)";
	matcher.find();
	matcher.group(); //返回此次匹配表达式的匹配结果
	//带参数的group(int g) 会对有分组的表达式,即有(),如果第g个分组不存在会报错,如果第g个分组没有匹配到匹配结果会报错,当然需要整个表达式有匹配结果才能有分组的匹配结果,否则会报错
	//group(g) 获取各个分组的匹配结果 g从1开始
	//group(0) 返回的是整个表达式的匹配结果
		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值