正则表达式

正则表达式:描述字符串的规则,操作字符串。

预定义字符

.      表示任意字符
    \d     数字          [0-9]
    \D     非数字        [^0-9]
    \s     空白字符      [\t\n\f\r]
    \S     非空白字符
    \w     单词字符    [a-zA-Z_0-9]   
    \W     非单词字符

注意:没有加上数量词之前,预定义字符只能匹配一个字符

正则表达式非java 正则表达式非空字符_前端


范围词

[abc]  出现的字符只能是abc其中的一个
     [^abc]  任意字符,除了abc
     [A-Za-z] a到z 或者A到z ,两边的值包含在内。 (并集)
     [a-z&&[def]] d、e或f (交集)

  	 (com|cn|net)  com 或者cn  或者 net

注意:没有加上数量词之前,范围词只能匹配一个字符

数量词

X ?       出现0次或者一次
      X *       出现0次或者多次
      X +       出现一次或者多次
      X{n}      出现n次
      X{n ,}    出现n次以上(包含n次)
      X{n,m}   出现n次以上,m次以下

正则表达式非java 正则表达式非空字符_正则表达式非java_02

边界匹配器

\b  只是表示单词的开始或结束部分,不匹配任何字符 . 单词边界

从字符串中找出三个字符的数据。

由于没有使用边界匹配器。所以对于匹配器而言,只要从左到右连续找到三个字符即可。不符合题意。如下图

//查找  找出三个字母组成的单次
    public static void  search() {
			String str="asas sd asa dfdff  sdsd  sds地方";
			
			
			//先把正则表达式编译成正则对象
			Pattern p=Pattern.compile("[a-zA-Z]{3}");
			
			//通过正则对象产生匹配器
			Matcher matcher = p.matcher(str);
			
			while(matcher.find()) {
				String group = matcher.group();
				System.out.println(group);
			}
	  }

控制台打印 :

asa
asa
dfd
sds
sds

如果要想找到连续三个字符,则要使用边界词,如下图

//查找  找出三个字母组成的单次
    public static void  search() {
			String str="asas sd asa dfdff  sdsd  sds地方";
			
			
			//先把正则表达式编译成正则对象
			Pattern p=Pattern.compile("\\b[a-zA-Z]{3}\\b");
			
			//通过正则对象产生匹配器
			Matcher matcher = p.matcher(str);
			
			while(matcher.find()) {
				String group = matcher.group();
				System.out.println(group);
			}
	  }

控制台打印 :

asa

分组
如果正则的内容需要被复用,那么就需要对正则的内容进行分组,分组的目的是提高正则的复用性。组号从1开始。

正则表达式非java 正则表达式非空字符_正则表达式非java_03

分组(...)

js中引用分组 (...)(...)\1\2
java中引用分组
	String s=" <span font-weight: bold; mso-spacerun: ?yes??? 仿宋_gb2312?;   >\r\n" + 
				"                    <font facx=\"x\" sizx=\"x\">中华人民共和国中国人民银行法</font>\r\n" + 
				"                </span>";
		
		s=s.replaceAll("<([^/|>| ]+) ([^\"|>|/]+)>", "<$1 style=\"$2\">");

正则表达式对字符串的操作有以下应用:

匹配
str.match(regex)

切割
str.split(regex)

替换
str.replace(regex,str)

注意:如果需要在replaceAll方法中,外部引用正则的组的内容,使用 $组号 即可

查找
查找需要使用的对象:

Pattern类 正则对象
	     Matcher 匹配器对象
         
         匹配器使用的方法: 
                               find() 通知匹配器查找符合规则的字符串,如果找到返回true,否则为false
                               group()
//查找  找出三个字母组成的单次
    public static void  search() {
			String str="asas sd asa  dfdff  sdsd  sds";
					
			//先把正则表达式编译成正则对象
			Pattern p=Pattern.compile("[a-zA-Z]{3}");
			
			//通过正则对象产生匹配器
			Matcher matcher = p.matcher(str);
			
			while(matcher.find()) {
				String group = matcher.group();
				System.out.println(group);
			}
	  }

其他

匹配 .   \\.

代码模拟

二、str.replace()

1、String字符串的replaceAll()/replace()方法支持正则表达式。
		2、正则表达式()表示或
              
              tableStr=tableStr.replaceAll("(<WAITING TIME <=)|(<WAITING TIME)|(<=\\d+ WAITING TIME)","");
              等同于
               tableStr=tableStr.replaceAll("<WAITING TIME","").replaceAll("<WAITING TIME <=","").replaceAll("(<=\\d+ WAITING TIME","");