正则

正则的基本语法

1 普通字符
2 转义字符
\n 表示换行符
\t 制表符
\ 代表\本身
^ $ (, ) ? + 匹配这些字符
标准字符集合
注意大小写的 大写时相反的意思
\d 任意一个数字0-9
\w 任意一个字母或数字或下划线,也就是A-Z,a-z,0-9,;
\s 包括空格,制表符,换行符等空白的其中任意一个
. 小数点可以匹配任意一个字符除了换行符 如果要匹配包括“\n"在内的所有字符
一般使用[\s\S]
自定义字符集合
[ab5@] 匹配a或b或5或@
[^359] 取反
[f-k] f-k之间的字母
[^ A-F0-3] A-F0-3 之外的任意字符
正则表达式的特殊符号,被包含在中括号内失去特殊意义除了^ 和

标准字符集合,除了小数点外,如果被包含与中括号,自定义字符集合将被包含该集合
[\d.-+]将匹配:数字小数点 + -
量词
修饰匹配次数的特殊符号
{n} 表示重复n次
{m,n}表示最少重复m次,最多重复n次
{m,} 表示最少重复m次
? 匹配表达0次或1次相当于{0,1}
+ 表达式至少出现1次 想当与{1,},
* 表达式不出现或出现任意次,相当于{0,}
匹配次数中的贪婪模式匹配字符越多越好 默认
匹配次数中的非贪婪模式 匹配字符越少越好,修饰匹配次数的特殊后在加上"?"
字符边界
零宽 复合某种条件的位置
^与字符开始的地方匹配
$ 与字符结束的地方匹配
\b 匹配一个单词边界 前面的字符和后面的字符不全是\w
第一想第一的\A
每行最后 $
全部最后 \Z
选择符和分组
表达式
| 匹配左边和右边的
() 捕获分组 1,在被修饰次数的时候 括号中的表达式可以被整体修饰
2,去匹配结果的时候 括号中的表达式匹配到的内容可以被单独得到
3,每一对括号会分配一个编号,使用()的捕获根据左括号的顺序从1
开始自动编号。捕获元素编号为零的第一个捕获是由整个正则表达式模式
匹配的文本
(? :Expresion) 一些表达式,不得不使用() ,但又不需要担保()中子表达式匹配的内容
这时可以用非捕获组来抵消使用()带来的副作用
反向引用(\nnn)
· 每一对()会分配一个编号,使用()的捕获会根据左括号的顺序1开始自动编号
通过反向引用,可以对分组已捕获的字符串进行引用
预搜素(零宽断言)
(?=exp) 断言自身出现的位置的后面能匹配表达式exp
(?<=exp) 断言自身出现的位置的前面能匹配表达式exp
(?!exp) 断言此位置的后面不能匹配表达式exp
(?<!exp) 断言此位置的前面不能匹配表达式exp

再Java中使用正则用到的两个包

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

创建正则表达式对象

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

public class z(){
	public static void mian(String[]args){
		//正则表达式对象
		Pattern p = Pattern.compile("\\w+");
		//创建Matcher对象
		Matcher m = p.matcher("asfsdf223&3323");
		//尝试将整个字符序列与该模式去匹配
		boolean yesorno = m.matches(); 
		//该方法扫描输入的序列,查找与改模式匹配的下一个子
		boolean yesorno2 = m.find();   
		while(m.find()) {
		//group(),group(0)匹配整个表达式的子字符串
			System.out.println(m.group());
			System.out.println(m.group(0));
		}
	}
}

测试分组

() 捕获分组 1,在被修饰次数的时候 括号中的表达式可以被整体修饰
2,去匹配结果的时候 括号中的表达式匹配到的内容可以被单独得到
3,每一对括号会分配一个编号,使用()的捕获根据左括号的顺序从1
开始自动编号。捕获元素编号为零的第一个捕获是由整个正则表达式模式

	//		测试分组的处理
//		表达式对象
		Pattern p = Pattern.compile("([a-z]+)([0-9]+)([A-Z]+)");
//		创建Matcher对象
		Matcher m = p.matcher("aasd11AA**erewrw22DD*were44DD");
		while(m.find()) {
			System.out.println(m.group()); 
			System.out.println(m.group(1));
			System.out.println(m.group(2));
			System.out.println(m.group(3));	
		}

正则表达式切割字符串

	public static void main(String[] args) {
		String str ="a345b234c";
		String[] arrs = str.split("\\d+");
		for(int i=0; i<arrs.length;i++) {
			System.out.println(arrs[i]);
		}
		System.out.println(Arrays.toString(arrs));
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值