public class RegularTest {
public static void main(String[] args){
p("str".matches("..."));
//public String replaceAll(String regex, String replacement)
//public String replaceFirst(String regex, String replacement)
p("A00123lB".replaceFirst("\\d","*"));
p("A00123lB".replaceAll("\\d", "*"));
// []表示范围,{}表示长度
// [0-9]表示在0到9之前的一个数
// \\d{0,10}表示0到10之间的长度
// Greedy 数量词
// X? X,一次或一次也没有
// X* X,零次或多次
// X+ X,一次或多次
// X{n} X,恰好 n 次
// X{n,} X,至少 n 次
// X{n,m} X,至少 n 次,但是不超过 m 次
// "\\" 匹配 反斜线字符(\)
// "\\".matches("\\\\") 一个\匹配的时候要写四个
// [abc] a、b 或 c(简单类)
// [^abc] 任何字符,除了 a、b 或 c(否定)
// [a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)(并集[a-z]|[A-Z])
// [a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
// [a-z&&[def]] d、e 或 f(交集)
// [a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
// [a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)
// . 任何字符(与行结束符可能匹配也可能不匹配)
// \d 数字:[0-9]
// \D 非数字: [^0-9]
// \s 空白字符:[ \t\n\x0B\f\r]
// \S 非空白字符:[^\s]
// \w 单词字符:[a-zA-Z_0-9]
// \W 非单词字符:[^\w]
// ^ 行的开头
// $ 行的结尾
// \b 单词边界
// \B 非单词边界
// p(" \n".matches("^[\\s&&[^\\n]]*\\n$"));这个匹配空白字付(开始是空白,但不是换行,结果是换行)
// p("hello sir".matches("^h.*r$"));
// "lan ".matches(".*\\z$") 这样的不能单词边界,要用行的结尾\z
// Reluctant 数量词(这个是勉强的,先用最少的去匹配)
// X?? X,一次或一次也没有
// X*? X,零次或多次
// X+? X,一次或多次
// X{n}? X,恰好 n 次
// X{n,}? X,至少 n 次
// X{n,m}? X,至少 n 次,但是不超过 m 次
// Possessive 数量词 (这个用来追求效率,直接打最多的,不行的话就不行了)
// X?+ X,一次或一次也没有
// X*+ X,零次或多次
// X++ X,一次或多次
// X{n}+ X,恰好 n 次
// X{n,}+ X,至少 n 次
// X{n,m}+ X,至少 n 次,但是不超过 m 次
// 文字替换(首次出现字符)
// Pattern pattern = Pattern.compile("正则表达式");
// Matcher matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World");
// 替换第一个符合正则的数据
// System.out.println(matcher.replaceFirst("Java"));
//
// 文字替换(全部)
// Pattern pattern = Pattern.compile("正则表达式");
// Matcher matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World");
// 替换第一个符合正则的数据
// System.out.println(matcher.replaceAll("Java"));
// 去除html标记
// Pattern pattern = Pattern.compile("<.+?>", Pattern.DOTALL);
// Matcher matcher = pattern.matcher("<a href=\"index.html\">主页</a>");
// String string = matcher.replaceAll("");
// System.out.println(string);
// 截取http://地址
// 截取url
// Pattern pattern = Pattern.compile("(http://|https://){1}[\\w\\.\\-/:]+");
// Matcher matcher = pattern.matcher("dsdsds<http://dsds//gfgffdfd>fdf");
// StringBuffer buffer = new StringBuffer();
// while(matcher.find()){
// buffer.append(matcher.group());
// buffer.append("\r\n");
// System.out.println(buffer.toString());
// }
// 匹配中文的Regular [\\u4e00-\\u9fa5]
//电子邮件的匹配
Pattern email = Pattern.compile("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+");
Matcher emailMatcher = email.matcher("langhu@qq.com");
//Matcher是匹配整个字符串
//find()找子串,start()找到子串开始的位置,end()找到子串结束的位置,
//但必须能找到子串才能用start,end这两个方法reset()重置
p(emailMatcher.matches());
//appendReplacement()和appendTail()方法
//忽略大小写Pattern.CASE_INSENSITIVE
String str = "langhua lanHUA LANghua lANGHUa dsfd LANGHUA T";
Pattern langhuaParttern = Pattern.compile("langhua", Pattern.CASE_INSENSITIVE);
Matcher langhuaMatcher = langhuaParttern.matcher(str);
StringBuffer sb = new StringBuffer();
int i = 0;
while(langhuaMatcher.find()){
i++;
if(i%2==0){
langhuaMatcher.appendReplacement(sb,"xiaolanghua");
}else{
langhuaMatcher.appendReplacement(sb,"dalanghua");
}
}
langhuaMatcher.appendTail(sb);
p(sb.toString());
//分组group()返回的是子串
String num = "123aa-1234aa-12384bb-0-*-*";
Pattern nump = Pattern.compile("(\\d{3,5})(\\w{2})");
Matcher numm = nump.matcher(num);
while(numm.find()){
p(numm.group(1));
}
Pattern pattern = Pattern.compile(".{1,3}?\\d");
Matcher marcher = pattern.matcher("2地3基13ab2cef2");
if(marcher.find()){
p(marcher.group());
p(marcher.start()+"-"+marcher.end());
}
}
public static void p(Object o){
System.out.println(o);
}
}
分享到:
相关推荐
本文写作时,一个包含了用正则表达式进行文本处理的Java规范需求(Specification Request)已经得到认可,你可以期待在JDK的下一版本中看到它。 然而,如果现在就需要使用正则表达式,又该怎么办呢?你可以从Apache...
java,正则表达式,详解,java正则表达式,PDF
Java正则表达式 Java 正则表达式 图片版 携带方便,查阅方便!~
JAVA正则表达式应用:任意输入一串字符串 如何输入exit退出程序;从输入的字符串中判断是否包含手机号码 正则表达式可以使用" +86| 86 1 d{10}" 如果包含请将其在控制台打印出来 否则输出不包含字符串 ...
Java正则表达式Java正则表达式Java正则表达式Java正则表达式
java正则表达式验证IP地址
正则表达式之道.doc 正则表达式中的特殊字符.doc Java正则表达式详解.doc 正则表达式.ppt JAVA正则表达式--Pattern和Matcher.doc 例子
Java正则表达式应用总结
Java正则表达式详解
java正则表达式.pdfjava正则表达式.pdfjava正则表达式.pdfjava正则表达式.pdfjava正则表达式.pdf
java正则表达式使用例子,代码是Android的
Java正则表达式详解
正则表达式的使用 java正则表达式的使用示例 java正则表达式
java正则表达式详细全面讲解描述
一篇学习Java正则表达式的文章。
Java正则表达式入门介绍课件;Java正则表达式入门介绍课件
网络上搜集到的java正则表达式编程,整理了下做成了PDF格式
java正则表达式使用.docx 资源
Java正则表达式入门介绍.ppt,介绍常用语法规则及使用方式等