1 为什么用正则表达式?
String已经有了这个 String s.matchers(reg);和String s.replaceall(reg,“”)
使用pattern和matcher两个类的原因在于上面的字符串处理能力有限,丰富了其它的很多的方法,提高处理的能力。其次是提高程序代码执行的效率,先把pattern编译。
2 正则表达式基础
基本的正则表达式的:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
//简单认识正则表达式的概念
/*
p("abc".matches("..."));
p("a8729a".replaceAll("\\d", "-"));
Pattern p = Pattern.compile("[a-z]{3}");
Matcher m = p.matcher("fgh");
p(m.matches());
p("fgha".matches("[a-z]{3}"));
*/
//初步认识. * + ?
/*
p("a".matches("."));
p("aa".matches("aa"));
p("aaaa".matches("a*"));
p("aaaa".matches("a+"));
p("".matches("a*"));
p("aaaa".matches("a?"));
p("".matches("a?"));
p("a".matches("a?"));
p("214523145234532".matches("\\d{3,100}"));
p("192.168.0.aaa".matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"));
p("192".matches("[0-2][0-9][0-9]"));
*/
//范围
/*
p("a".matches("[abc]"));
p("a".matches("[^abc]"));
p("A".matches("[a-zA-Z]"));
p("A".matches("[a-z]|[A-Z]"));
p("A".matches("[a-z[A-Z]]"));
p("R".matches("[A-Z&&[RFG]]"));
*/
//认识\s \w \d \
/*
p(" \n\r\t".matches("\\s{4}"));
p(" ".matches("\\S"));
p("a_8".matches("\\w{3}"));
p("abc888&^%".matches("[a-z]{1,3}\\d+[&^#%]+"));
p("\\".matches("\\\\"));
*/
//POSIX Style
//p("a".matches("\\p{Lower}"));
//boundary
//^在【】中表示非的意思,在外面表示开头的意思
/*
p("hello sir".matches("^h.*"));
p("hello sir".matches(".*ir$"));
p("hello sir".matches("^h[a-z]{1,3}o\\b.*"));
p("hellosir".matches("^h[a-z]{1,3}o\\b.*"));
//whilte lines
p(" \n".matches("^[\\s&&[^\\n]]*\\n$"));
p("aaa 8888c".matches(".*\\d{4}."));
p("aaa 8888c".matches(".*\\b\\d{4}."));
p("aaa8888c".matches(".*\\d{4}."));
p("aaa8888c".matches(".*\\b\\d{4}."));
*/
//email
//p("asdfasdfsafsf@dsdfsdf.com".matches("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+"));
//matches find lookingAt
//matches是找整个字符串,find是找字串,lookingAt每次从头开始找
//matches和find一起用可能会产生冲突,matches之后find接着从matches不匹配//的位置开始找,因此要用reset一下
/*
Pattern p = Pattern.compile("\\d{3,5}");
String s = "123-34345-234-00";
Matcher m = p.matcher(s);
p(m.matches());
m.reset();
p(m.find());
p(m.start() + "-" + m.end());
p(m.find());
p(m.start() + "-" + m.end());
p(m.find());
p(m.start() + "-" + m.end());//用的时候确保能够找的出来,不然用这个方法会报错
p(m.find());
//p(m.start() + "-" + m.end());
p(m.lookingAt());
p(m.lookingAt());
p(m.lookingAt());
*/
//replacement
/*
Pattern p = Pattern.compile("java", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher("java Java JAVa JaVa IloveJAVA you hateJava afasdfasdf");
StringBuffer buf = new StringBuffer();
int i=0;
while(m.find()) {
i++;
if(i%2 == 0) {
m.appendReplacement(buf, "java");
} else {
m.appendReplacement(buf, "JAVA");
}
}
m.appendTail(buf);
p(buf);
*/
//group
/*
Pattern p = Pattern.compile("(\\d{3,5})([a-z]{2})");
String s = "123aa-34345bb-234cc-00";
Matcher m = p.matcher(s);
while(m.find()) {
p(m.group());
}
*/
//qulifiers
/*
Pattern p = Pattern.compile(".{3,10}+[0-9]");
String s = "aaaa5bbbb68";
Matcher m = p.matcher(s);
if(m.find())
p(m.start() + "-" + m.end());
else
p("not match!");
*/
//non-capturing groups
/*
Pattern p = Pattern.compile(".{3}(?=a)");
String s = "444a66b";
Matcher m = p.matcher(s);
while(m.find()) {
p(m.group());
}
*/
//back refenrences
/*
Pattern p = Pattern.compile("(\\d(\\d))\\2");
String s = "122";
Matcher m = p.matcher(s);
p(m.matches());
*/
//flags的简写
//Pattern p = Pattern.compile("java", Pattern.CASE_INSENSITIVE);
p("Java".matches("(?i)(java)"));
}
public static void p(Object o) {
System.out.println(o);
}
}
分享到:
- 2009-02-04 20:33
- 浏览 1043
- 评论(0)
- 论坛回复 / 浏览 (0 / 2787)
- 查看更多
相关推荐
在学习完该教程后,应该对正则表达式有了初步的了解,并能熟练地运用 java.util.regex 包中的关于正则表达式的类库,为今后学习更高级的正则表达式技术奠定良好的基础。 教程中所有的源代码都在 src 目录下,可以...
java正则表达式,初步认识正则表达式的应用。文档教程
分散字符串 请把下列字符串分散为数字和字符构成的串 String s1 = "abc1234xyz667kkmd764tttt"; 串由字母和数字间隔构成,要分离出所有的字母段和数字段,即: abc 1234 xyz 667 kkmd ...tttt
TPerlRegEx[Delphi正则表达式] 安装: 将下载的文件解压到一个路径下,打开Delphi,执行[Component]-[Install Component],选择[PerlRegEx.pas]进行安装 初步使用: 参照万一的博客中的例子,发现新版本中有一些...
现在WEB 2.0开发 很多东西需要用户验证,而正则表达式正好弥补了 验证的需求 这里的教程让大家很轻松的学习正则表达式 让大家对正则表达式有个初步的了解
像正则表达式的一些应用,如用来判断处理字符串,像身份证号码,邮箱号等等约束,里面有详细的说明和使用实例,很适合初步接触正则表达式的人来学习
一张图了解初步正则表达式,适合小白,通俗易懂,结构清晰
正则表达式初步 学习Perl的好帮手
正则表达式辅助工具包,校验、生成、推导 比较简单(略过) 首先,我们先对RegexBuddyg 产生一个整体的初步的认识,而不是设法解释所有的东西。RegexBuddyg是相当易懂的容易的,所以我想经过简单大家应该能够基本...
介绍了一些有关正则表达式的基础知识,如果想对正则表达式有个初步的了解,可以看一下。
关于正则表达式的入门教材!看完之后可以初步运用正则表达式!也可作为参考资料查询!
讲的通俗易懂,真的是一天就对正则表达式有一个比较初步的认识。可以毫不夸张的说,我原来都没听说过正则表达式,就一天,能够写出很好用的的式子啦!
自己整理的正则表达式的一些初步使用和注意规范
正则表达式30分钟入门教程(详细),介绍了正则的基本含义和入门初步知识
正则表达式的详细讲解及应用。由最初的初步认识到应用场景和应用规则!
简单入门级别,一看就能初步了解正则表达式的知识点。 具体的自己看吧! 本文档是自己做得内容是摘抄于网奇网站。
正则表达式使用详解 ...在对正则表达式的功能和作用有了初步的了解之后,我们就来具体看一下正则表达式的语法格式。 正则表达式的形式一般如下: /love/其中位于“/”定界符之间的部分就是将要在目
正则表达式使用详解 ...在对正则表达式的功能和作用有了初步的了解之后,我们就来具体看一下正则表达式的语法格式。 正则表达式的形式一般如下: /love/其中位于“/”定界符之间的部分就是将要在目
python全套学习内容,包括python基础语法教程、字符串处理、函数、列表操作、文件处理、字典、面向对象、正则表达式等。 使用者:python初级学者,适合初步入手python python基本内容全覆盖
语法格式:位于定界符”/”之间。 较为常用的元字符包括: “+”, “*”,以及 “?... 在对如何使用正则表达式有了初步了解之后,我们来看一下其它几个重要的元字符的使用方式。 \s:用于匹配单个