您的位置:首页 > 其它

正则表达式

2013-08-14 23:50 148 查看
在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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: