Java中的正则表达式以及实例

1、 字符
 a) x字符x。如‘a’代表字符a
 b) \ \反斜线字符用\\代表一个\
 c) \n换行符(‘\u000A’)
 d) \r回车符(‘\u000D’)
2、 字符类
 a) [abc] a、b或c(简单类)
 b) [^abc]除了a、b、c的任何字符
 c) [a-zA-Z]a到z或A到Z,两头字母包括在内
 d) [0-9] 0到9的字符都包括
  i. qq.matches([1-9][0-9]{4,14})代表的是第一位是取1到9,后面紧跟的至少4位最多14位取值是0到9,最终数据是5-15位
 ii. 也可以写作qq.matches([1-9]{1}[0-9]{4,14})
3、 预定义字符类
 a) . 表示任何字符。如果想表示 . 可以用 \. 来表示
 b) \d表示数字[0-9] 这里需要注意的是此处的\需要用\\来代替。
 c) \w单词字符:[a-zA-Z_0-9]
  i. 在正则表达式里面组成单词的东西必须由这些东西组成
4、 边界匹配器
 a) ^行的开头
 b) $行的结尾
 c) \b单词边界:只要不是单词字符就都是单词边界
5、 数量词
 a) X? X一次或一次也没有
 b) X* X零次或多次
 c) X+ X一次或多次
 d) X{n} X恰好n次
 e) X{n,} X至少n次
 f) X{n,m} X至少n次,但不超过m次
6、 正则表达式的应用
 a) public boolean matches(String regex)判断功能
  i. 位于String类中告知此字符串是否匹配给定的正则表达式
 b) public String [] split (String regex)分割功能
  i. String类,根据正则表达式来匹配拆分字符串。
  ii. 18-24如果想进行拆分两个数字18和24
  iii. String s=”18-24”
  iv. String regex=”-”
  v. String []array=s.split(regex)
  vi. a=Integer.parseInt(array[0]) //18
  vii. b=Integer.parseInt(array[1])//24
 c) public String replaceAll(String regex,String replacement)替换功能
  i. Stirng类
  ii. String s=”hel123lowo456rld”;//去除字符串中的数字,变为*
  iii. String regex=”\d+”;
  iv. String ss=” * ”
  v. String result =s.replaceAll(regex,ss);//输出结果为hel* lowo* rld
  vi. 如果想把字符串中每个数字都变为* 则需要修改String regex=”\d+”;将其修改为String regex=”\d”。
 d) 获取功能需要使用Pattern和Matcher类(在下面实例中给出代码)
  i. 也可用于判断功能(但是不如上面的a方法进行判断简单)
  ii. Pattern p=pattern.compile(“a*b”)//将正则表达式编译成模式对象,a出现零次或多次,b出现一次。
  iii. Matcher m=p.matcher(“aaaab”)//通过模式对象得到匹配对象aaaab为匹配字符串
  iv. boolean b=m.matches()//b输出结果为true

正则表达式的获取功能实例

package test08_zhengdingbiaodashi;

import java.util.regex.Matcher;
import java.util.regex.Pattern;
//功能实现获取字符串s中的长度为5的独立字符
public class Research {
	public static void main(String[] args) {
		//字符串
		String s="hello world zfliu 1996 20181025 ";
		//正定表达式规则,因为是独立字符串此处必须要加上字符\\d以获取字符边界
		String regex="\\b\\w{5}\\b";
		
		//把规则编译成模式对象
		Pattern p=Pattern.compile(regex);
		
		//通过模式对象得到匹配器对象
		Matcher m=p.matcher(s); 
		
		//调用匹配器功能
		//创建匹配对象后可以进行三个不同的操作,每个操作都会返回以一个boolean值
		//1、public boolean matches()方法尝试将整个输入序列与该模式匹配
		//2、public boolean lookingAt()尝试将输入序列从头开始与该模式匹配,只从头开始进行一次成功匹配
		//3、public boolean find()方法扫描输入序列以查找与该模式匹配的下一个子序列,从头开始可以进行多次成功匹配
		
		
		//注意每次必须调用find方法之后再调用group方法得到匹配的字符
		///public String group();
		
		while(m.find()) {
			String s1=m.group();
			System.out.println(s1);
			
		}
		
	}

}

猜你喜欢

转载自blog.csdn.net/zfliu96/article/details/83446885
今日推荐