正则表达式

来源:互联网 发布:windows vista没人用 编辑:程序博客网 时间:2024/05/16 11:28

在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}","145234523452345".matches("\\d{3,100}"));// 出现一个数字,至少 3 次,不多于 100 次// 使用的是 “.” 连接p("192.168.0.aaa - \\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}","192.168.0.aaa".matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"));// 注意字母[a-z]前面没有 “\\”p("192.168.0.aaa - \\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.[a-z]{3}","192.168.0.aaa".matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,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);}}


原创粉丝点击