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
- 浏览 1080
- 评论(0)
- 论坛回复 / 浏览 (0 / 2801)
- 查看更多
相关推荐
正则表达式是编程语言中用于模式匹配的强大工具,尤其在...通过这个简短的教程,你应该对Python中的正则表达式有了初步的了解。继续实践和探索,将有助于你更好地掌握这一强大工具,从而在处理文本数据时更加得心应手。
尽管在短时间内难以掌握所有细节,但通过本教程提供的示例和解释,读者应能对正则表达式有一个初步的认识,并能在自己的程序或网页中使用它进行基本的文本匹配。文中还提到,学习正则表达式需要大量的练习和实际应用...
1. **定义需求**:明确要匹配的字符串特征,确定正则表达式的初步结构。 2. **构建表达式**:根据需求在工具中输入正则表达式。 3. **测试匹配**:输入不同的测试用例,检查是否符合预期。 4. **优化调整**:如果...
"精通正则表达式"是一本深入介绍这一主题的专业书籍,通过阅读其第一章和第四章的内容,我们可以对正则表达式的基本概念和高级用法有一个初步的认识。 第一章通常会介绍正则表达式的起源和基本概念。正则表达式最早...
2. **初步认识Java正则表达式** - Java中的正则表达式主要通过`java.util.regex`包提供支持。 - `Pattern`类用于编译正则表达式,`Matcher`类则用于执行匹配操作,如`matches()`, `find()`, `replaceAll()`等方法...
正则表达式是一种强大的文本处理工具,用于在字符串中匹配、查找、替换或者提取符合特定模式的文本。...通过半小时的初步了解,你可以建立起对正则表达式的认识,然后逐步深入,成为这个领域的专家。
### 正则表达式校验身份证号码 #### 知识点概述 身份证号码在中国大陆具有唯一性,用于标识每一个公民的身份。身份证号码分为15位和18位两种格式,其中18位号码是在15位基础上增加了一个4位出生年份以及一位校验码...
在"马士兵JAVA视频教程J2SE专题正则表达式02初步认识Java正则表达式avi.flv"中,可能会进一步讲解: 1. 量词:`+`表示至少一次,`*`表示零次或多次,`?`表示零次或一次,`{n}`表示恰好n次,`{n,}`表示至少n次,`{n,...
通过这些基本概念和实例,你应该对Java正则表达式有了初步了解。在实际开发中,结合更多的正则表达式语法和实践,你会发现它的强大和灵活性。不断探索和实践,你将能更熟练地运用Java正则表达式解决各种字符串处理...
本教程的目标是在30分钟内帮助你理解和初步掌握正则表达式的基本概念。 1. **元字符**:正则表达式中的元字符具有特殊含义,例如`\b`表示单词边界,`.`代表任何单个非换行符的字符,`*`表示前面的字符可以重复0次或...
这篇文档旨在帮助读者在30分钟内理解和初步掌握正则表达式的基本概念。 1. **什么是正则表达式?** 正则表达式(Regular Expression,简称regex)是一串字符序列,用于定义字符串中的模式。它能够用来检查一个字符...
分散字符串 请把下列字符串分散为数字和字符构成的串 String s1 = "abc1234xyz667kkmd764tttt"; 串由字母和数字间隔构成,要分离出所有的字母段和数字段,即: abc 1234 xyz 667 kkmd ...tttt
正则表达式可以用于初步的输入验证,但完整的错误处理可能需要更复杂的逻辑。 6. **扩展性**:此计算器可能支持自定义运算符或更复杂的数学函数,这需要扩展正则表达式以识别这些新符号,并在逆波兰表达式计算过程...
本教程适合对正则表达式有初步了解或完全不懂的读者,按照章节顺序逐步学习,每个部分都有清晰的解释和示例代码,你可以结合C#编程环境实践操作,以加深理解和应用。 3. **正则表达式到底是什么?** 正则表达式...
TPerlRegEx[Delphi正则表达式] 安装: 将下载的文件解压到一个路径下,打开Delphi,执行[Component]-[Install Component],选择[PerlRegEx.pas]进行安装 初步使用: 参照万一的博客中的例子,发现新版本中有一些...
### 常用正则表达式详解 #### 匹配中文字符 - **正则表达式**: `[\u4e00-\u9fa5]` - **应用场景**: - 文本处理与分析。 - 数据清洗时,用于识别并处理中文文本中的特定字符。 - **特点**: - `\u4e00` 至 `\u9fa5...
像正则表达式的一些应用,如用来判断处理字符串,像身份证号码,邮箱号等等约束,里面有详细的说明和使用实例,很适合初步接触正则表达式的人来学习