`
chendang1314
  • 浏览: 103729 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

正则表达式初步

    博客分类:
  • java
阅读更多

1          为什么用正则表达式?

String已经有了这个 String s.matchers(reg);String s.replaceallreg,“”)

使用patternmatcher两个类的原因在于上面的字符串处理能力有限,丰富了其它的很多的方法,提高处理的能力。其次是提高程序代码执行的效率,先把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每次从头开始找

              //matchesfind一起用可能会产生冲突,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);

       }

 

}

分享到:
评论

相关推荐

    Python基础入门知识之正则表达式学习 正则表达式30分钟入门教程 共21页.pdf

    正则表达式是编程语言中用于模式匹配的强大工具,尤其在...通过这个简短的教程,你应该对Python中的正则表达式有了初步的了解。继续实践和探索,将有助于你更好地掌握这一强大工具,从而在处理文本数据时更加得心应手。

    正则表达式入门教程(pdf版

    尽管在短时间内难以掌握所有细节,但通过本教程提供的示例和解释,读者应能对正则表达式有一个初步的认识,并能在自己的程序或网页中使用它进行基本的文本匹配。文中还提到,学习正则表达式需要大量的练习和实际应用...

    正则表达式可视化调试工具

    1. **定义需求**:明确要匹配的字符串特征,确定正则表达式的初步结构。 2. **构建表达式**:根据需求在工具中输入正则表达式。 3. **测试匹配**:输入不同的测试用例,检查是否符合预期。 4. **优化调整**:如果...

    精通正则表达式第一章+第四章

    "精通正则表达式"是一本深入介绍这一主题的专业书籍,通过阅读其第一章和第四章的内容,我们可以对正则表达式的基本概念和高级用法有一个初步的认识。 第一章通常会介绍正则表达式的起源和基本概念。正则表达式最早...

    正则表达式.rar

    2. **初步认识Java正则表达式** - Java中的正则表达式主要通过`java.util.regex`包提供支持。 - `Pattern`类用于编译正则表达式,`Matcher`类则用于执行匹配操作,如`matches()`, `find()`, `replaceAll()`等方法...

    半小时了解正则表达式

    正则表达式是一种强大的文本处理工具,用于在字符串中匹配、查找、替换或者提取符合特定模式的文本。...通过半小时的初步了解,你可以建立起对正则表达式的认识,然后逐步深入,成为这个领域的专家。

    正则表达式校验身份证号码

    ### 正则表达式校验身份证号码 #### 知识点概述 身份证号码在中国大陆具有唯一性,用于标识每一个公民的身份。身份证号码分为15位和18位两种格式,其中18位号码是在15位基础上增加了一个4位出生年份以及一位校验码...

    JAVA正则表达式概述视频

    在"马士兵JAVA视频教程J2SE专题正则表达式02初步认识Java正则表达式avi.flv"中,可能会进一步讲解: 1. 量词:`+`表示至少一次,`*`表示零次或多次,`?`表示零次或一次,`{n}`表示恰好n次,`{n,}`表示至少n次,`{n,...

    Java正则表达式快速学习

    通过这些基本概念和实例,你应该对Java正则表达式有了初步了解。在实际开发中,结合更多的正则表达式语法和实践,你会发现它的强大和灵活性。不断探索和实践,你将能更熟练地运用Java正则表达式解决各种字符串处理...

    三十分钟学会正则表达式

    本教程的目标是在30分钟内帮助你理解和初步掌握正则表达式的基本概念。 1. **元字符**:正则表达式中的元字符具有特殊含义,例如`\b`表示单词边界,`.`代表任何单个非换行符的字符,`*`表示前面的字符可以重复0次或...

    本电子文档讲解了正则表达式

    这篇文档旨在帮助读者在30分钟内理解和初步掌握正则表达式的基本概念。 1. **什么是正则表达式?** 正则表达式(Regular Expression,简称regex)是一串字符序列,用于定义字符串中的模式。它能够用来检查一个字符...

    算法编程基础--第02讲-正则表达式初步_分散字符串

    分散字符串 请把下列字符串分散为数字和字符构成的串 String s1 = "abc1234xyz667kkmd764tttt"; 串由字母和数字间隔构成,要分离出所有的字母段和数字段,即: abc 1234 xyz 667 kkmd ...tttt

    正则表达式+逆波兰式的计算器

    正则表达式可以用于初步的输入验证,但完整的错误处理可能需要更复杂的逻辑。 6. **扩展性**:此计算器可能支持自定义运算符或更复杂的数学函数,这需要扩展正则表达式以识别这些新符号,并在逆波兰表达式计算过程...

    01C#正则表达式基础教程.doc

    本教程适合对正则表达式有初步了解或完全不懂的读者,按照章节顺序逐步学习,每个部分都有清晰的解释和示例代码,你可以结合C#编程环境实践操作,以加深理解和应用。 3. **正则表达式到底是什么?** 正则表达式...

    TPerlRegEx[Delphi正则表达式]

    TPerlRegEx[Delphi正则表达式] 安装: 将下载的文件解压到一个路径下,打开Delphi,执行[Component]-[Install Component],选择[PerlRegEx.pas]进行安装 初步使用: 参照万一的博客中的例子,发现新版本中有一些...

    常用正则表达式******

    ### 常用正则表达式详解 #### 匹配中文字符 - **正则表达式**: `[\u4e00-\u9fa5]` - **应用场景**: - 文本处理与分析。 - 数据清洗时,用于识别并处理中文文本中的特定字符。 - **特点**: - `\u4e00` 至 `\u9fa5...

    正则表达式的N种应用实例

    像正则表达式的一些应用,如用来判断处理字符串,像身份证号码,邮箱号等等约束,里面有详细的说明和使用实例,很适合初步接触正则表达式的人来学习

Global site tag (gtag.js) - Google Analytics