Pattern&Matcher简单用法

package com.xx;

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

/**
 * Pattern&Matcher
 * 
 * @author xx
 *
 */
public class Test1 {
	public static void main(String[] args) {
		// 创建一个正则表达式
		Pattern pattern = Pattern.compile("[0-9]+");
		System.out.println("正则表达式:" + pattern);

		// 使用正则匹配字符串
		boolean matches = Pattern.matches("[0-9]+", "abcde123");
		System.out.println("是否匹配正则表达式:" + matches);

		// 使用正则表达式切割字符串
		String[] arr = pattern.split("a1b2c3d4");
		Arrays.stream(arr).forEach(System.out::println);

		// Matcher提供更加强大的正则匹配操作
		Matcher matcher = pattern.matcher("a1b2c3d4");
		// 匹配全部字符串
		boolean matches2 = matcher.matches();
		System.out.println("是否匹配正则表达式:" + matches2);
		// 只匹配第一个字符串
		boolean lookingAt = matcher.lookingAt();
		System.out.println("首字母是否匹配正则表达式:" + lookingAt);
		// 是否存在匹配项(类似于contains)
		boolean find = matcher.find();
		System.out.println("是否存在匹配项:" + find);

		Pattern pattern2 = Pattern.compile("[0-9]+");
		Matcher matcher2 = pattern2.matcher("aaa2223bb4444");
		// 匹配过滤后的字符串,默认返回第一个
		matcher2.find();
		// 查看最后匹配的结果
		String string = matcher2.toString();
		System.out.println("string" + string);
		// 匹配首个过滤后的子字符串
		// matcher2.lookingAt();
		// 匹配整个字符串
		// matcher2.matches();
		// 返回第一个匹配项的索引位置,默认返回第一个
		int start = matcher2.start();
		// 返回最后一个匹配项的索引位置,默认返回第一个
		int end = matcher2.end();
		// 返回匹配到的字符串
		String group = matcher2.group();
		System.out.println(start);
		System.out.println(end);// 这里是7是因为2223被当成了一个整体
		System.out.println(group);

		// eg
		Pattern pattern3 = Pattern.compile("[a-z]+");
		Matcher matcher3 = pattern3.matcher("aaa111bbb222ccc333");
		while (matcher3.find()) {
			System.out.println("过滤结果:" + matcher3.group() + ";子字符串下标:" + matcher3.start());
		}

	}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值