加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式

发布时间:2020-12-13 19:38:36 所属栏目:百科 来源:网络整理
导读:在java中matches中用到很多。 范例: package com.haizhu;import java.util.regex.Matcher;import java.util.regex.Pattern;public class RegExp {public static void main(String[] args) {p("abc - ...","abc".matches("..."));// 字符串匹配,有三个字符

在java中matches中用到很多。

范例:

package com.haizhu;

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

public class RegExp {
	public static void main(String[] args) {
		p("abc - ...","abc".matches("..."));							// 字符串匹配,有三个字符,用三个点匹配,结果是“true”
		
		p("a8729a - replace ","a8729a".replaceAll("d","-"));			// 使用正则表达式,将所有的数字替换为“-”

		//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&    认识         Pattern       &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
		Pattern p = Pattern.compile("[a-z]{3}");						// 定义一个匹配模板,预处理,效率高
		Matcher m = p.matcher("fgh");
		p("Pattern.compile ",m.matches());
		// 上面这三句可以合成下面一句,但是上面的好处还是有很多的:效率,功能 ,等等
		p("改写Pattern.compile ","fhg".matches("[a-z]{3}"));
		
		//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&    认识 “ . 、 * 、+ ”     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
		p("a - .","a".matches("."));
		p("a - a","a".matches("a"));									// 注意,不一定全是正则匹配,字符跟字符也可以
		p("aaa - a?","aaa".matches("a?"));								// 0 或 1 个
		p("aaa - a*","aaa".matches("a*"));								// 0 或 N 个
		p("aaa - a+","aaa".matches("a+"));								// 1 或 N 个
		p("  - a?","".matches("a?"));
		p("  - a*","".matches("a*"));
		p("  - a+","".matches("a+"));

		p("145234523452345 - d{3,}","145234523452345".matches("d{3,}"));	// 出现一个数字,至少 3 次,没有上限
		p("145234523452345 - d{3,100}",100}"));	// 出现一个数字,至少 3 次,不多于 100 次
		// 使用的是 “.” 连接
		p("192.168.0.aaa - d{1,3}.d{1,3}","192.168.0.aaa".matches("d{1,3}"));
		// 注意字母[a-z]前面没有 “”
		p("192.168.0.aaa - d{1,3}.[a-z]{3}",3}.[a-z]{3}"));
		// 更加精确的数组匹配,确定数字的范围
		p("192 - ","192".matches("[0-2][0-9][0-9]"));					// 中括号只匹配一个字符,要想匹配多个,使用{}

		//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&          范围                                 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
		p("a - [abc]","a".matches("[abc]"));
		p("a - [^abc]","a".matches("[^abc]"));							// 使用 “^” 表示不再这个范围内
		p("字母和数字","a".matches("[0-9a-zA-Z]"));							// 数字,大写,小写都可以
		p("a - [a-zA-Z]","a".matches("[a-zA-Z]"));						// 大写,小写都可以(直接写一起,不用分割)
		p("a - [a-z]|[A-Z]","a".matches("[a-z]|[A-Z]"));				// 同上
		p("a - [a-z[A-Z]]","a".matches("[a-z[A-Z]]"));					// 同上
		p("A - [A-Z&&[ABC]]","A".matches("[A-Z&&[ABC]]"));				// A-Z 并且 属于ABC ,也就是交集的意思

		//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&       认识 s w d      &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
		p("","");

		//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&       认识边界                                  &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
		p("hello sir - ^h.*","hello sir".matches("^h.*"));
		p("hello sir - .*ir$","hello sir".matches(".*ir$"));
		p("hello sir - ^h.*ir$","hello sir".matches("^h.*ir$"));

		//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&       认识分组                                  &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
		String s2 = "123aa-2345-bb-668cc-00";
		Pattern p2 = Pattern.compile("d{3,5}[a-z]{2}");
		Matcher m2 = p2.matcher(s2);
		while(m2.find()){
			p("没有添加括号时",m2.group());
		}

		String s3 = "123aa-2345-bb-668cc-00";
		Pattern p3 = Pattern.compile("(d{3,5})([a-z]{2})");
		Matcher m3 = p3.matcher(s3);
		while(m3.find()){
			p("这个就是find的结果",m3.group(0));
			p("只打印数字部分",m3.group(1));
			p("只打印字母部分",m3.group(2));
		}
	}
	public static void p(String s,Object o){
		System.out.println(s+":"+o);
	}
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读