java正则表达式

正则表达式简介

正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,模式描述在搜索文本时要匹配的一个或多个字符串。
正则标记
如果想要研究正则表达式首先需要知道正则标记(元字符),在java中正则标记都在java.util.regex.Pattern类中进行了定义。

1、【单个】描述某一个字符
        . x:表示由x(字符)所组成;
        
public static void main(String[] args){
		String testA="a";
		String testB="m";
		String regex="a";
		//输出true
		System.out.println(testA.matches(regex));
		//输出false
		System.out.println(testB.matches(regex));
	}

        . \\:匹配"\";
    
public static void main(String[] args){
		String testA="\\";
		String testB="";
		//第一组\\转义testA中第一个\第二个\\转义testA中第二个\
		String regex="\\\\";
		//输出true
		System.out.println(testA.matches(regex));
		//输出false
		System.out.println(testB.matches(regex));
	}

        . \t:描述的是制表符;
       . \n:表示换行符;
        
2、【单个】描述一个范围
       . [abc]:表示a、b、c三个字符中的一个;
        
public class regexTest {

	public static void main(String[] args){
		String testA="a";
		String testB="m";
		String regex="[abc]";
		//输出true
		System.out.println(testA.matches(regex));
		//输出false
		System.out.println(testB.matches(regex));
	}
}

       . [^abc]:表示除了abc三个字母以外的其他字母;
        
public static void main(String[] args){
		String testA="c";
		String testB="a";
		
		String regex="[^ab]";
		//输出true
		System.out.println(testA.matches(regex));
		//输出false
		System.out.println(testB.matches(regex));
	}

       . [0-9]:表示"'0'~'9'"中的一个数字字符;
       . [a-zA-Z]:由字母组成不区分大小写;
3、【单个】简化表达式
       . ".": 表示任意一位字符
     . \d: 等价于"[0-9]"表示任意一位数字
       . \D: 等价于"[^0-9]"表示非任意一位数字
      . \s:表示是一位空格,可能是空格、\t、\n
      . \S:表示非空格非\t,非\n
      。\w: 等价于"[a-zA-Z0-9_]",表示字母、数字、下划线所组成

        。\W:等价与"[^a-zA-Z0-9_]"  


4、边界匹配(java用不到)   
      。^:表示正则的开始
      。$: 表示正则的结束
5、数量表达式,在之前所有的符号编写几次就能够出现几次,如果现在需要重复出现n次则就需要数量表达式
     。正则?:表示该匹配出现0次或1次
     。正则+:表示该匹配出现1次或多次
     。正则*:表示该匹配出现0次、1次或多次
     。正则{n}:表示该匹配出现正好n次
     。正则{n,}:表示该匹配出现n次及以上
     。正则{n,m}:表示匹配出现n~m次
public static void main(String[] args){
		String testA="aaaa";
		String testB="aa";
		String testC="aaaaaaaaa";//9次
		//a出现4到8次
		String regex="a{4,8}";
		//true
		System.out.println(testA.matches(regex));
		//false
		System.out.println(testB.matches(regex));
		//false
		System.out.println(testC.matches(regex));
	}

6、逻辑匹配
     。正则A正则B:表示与的关系,在第一个匹配之后立即匹配第二个
     。正则A|正则B:表示正则A或正则B出现一次

      。(正则):按照一组正则进行处理

public static void main(String[] args){
 		String testA="aad";
		String testB="123";
		String testC="+==";
		String testD="ad13";
		//只出现字母或数字
		String regex="([a-zA-Z]+)|([0-9]+)";
		//true
		System.out.println(testA.matches(regex));
		//true
		System.out.println(testB.matches(regex));
		//false
		System.out.println(testC.matches(regex));
		//false
		System.out.println(testD.matches(regex));
	}

String类对正则的支持


实现字符串替换

public static void main(String[] args){
		String string="dfbs!#$IUWDb@$ywf893(**r8923rffuhc=23%36^^&#*@^$";
		String regex="[^a-zA-Z]";
		System.out.println(string.replaceAll(regex, ""));
	}
运行结果
字符串拆分
public static void main(String[] args){
		String string="qwudi32384hwihuh98233203erwe432fwe04bfef";
		//将字符串拆为不含数字的子串
		String regex="\\d+";
		String result[]=string.split(regex);
		for(int i=0;i<result.length;i++){
			System.out.println(result[i]);
		}
	}
运行结果
验证某一个字符串是否是数字,如果是则将其转换为double
public static void main(String[] args){
		String string="1101023";
		String regex="\\d+(\\.\\d+)?";
		if(string.matches(regex)){
			double data=Double.parseDouble(string);
			System.out.println(data);
		}
	}
运行结果




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值