源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Java正则表达式基础入门知识

  • 时间:2020-10-20 02:47 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Java正则表达式基础入门知识
众所周知,在程序开发中,难免会遇到需要匹配、查找、替换、判断字符串的情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力。因此,学习及使用正则表达式,便成了解决这一矛盾的主要手段。 大家都知道,正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。 一:什么是正则表达式    [b]1.定义:[/b]正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。    [b] 2.用途:[/b] 字符串匹配(字符匹配) 字符串查找 字符串替换 字符串分割     例如: 从网页中揪出email地址 IP地址是否正确 从网页中揪出链接    [b] 3.java中处理正则表达式的类:[/b] java.lang.String java.util.regex.Pattern:模式类:字符串要被匹配的这么一个模式,该模式本身已经被编译过,使用的话效率要高很多。 java.util.regex.Matcher:匹配类:这个模式匹配某个字符串所产生的结果,这个结果可能会有很多个。    [b] 4:下面通过一个小程序简单介绍一下正则表达式[/b]
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
 public static void main(String[] args) {
  //matches()判断字符串是否匹配某个表达式,"."表示任何一个字符
  p("abc".matches("..."));
  //将字符串"a2389a"中的数字用*替换,\d 表示“0--9”数字
  p("a2389a".replaceAll("\\d", "*"));
  //将任何是a--z的字符串长度为3的字符串进行编译,这样可以加快匹配速度
  Pattern p = Pattern.compile("[a-z]{3}");
  //进行匹配,并将匹配结果放在Matcher对象中
  Matcher m = p.matcher("abc");
  p(m.matches());
  //上面的三行代码可以用下面一行代码代替
  p("abc".matches("[a-z]{3}"));
 }
 public static void p(Object o){
  System.out.println(o);
 }
} 
下面是打印结果 true a****a true true  现在通过一些实验来说明正则表达式的匹配规则,这儿是Greedy方式   .              任何字符  a?             a一次或一次也没有  a*             a零次或多次  a+            a一次或多次  a{n}?      a恰好 n 次  a{n,}?       a至少n次  a{n,m}?   a至少n次,但是不超过m次         //初步认识. * + ?         p("a".matches("."));//true         p("aa".matches("aa"));//true         p("aaaa".matches("a*"));//true         p("aaaa".matches("a+"));//true         p("".matches("a*"));//true         p("aaaa".matches("a?"));//false         p("".matches("a?"));//true         p("a".matches("a?"));//true         p("1232435463685899".matches("asdsfdfagf@adsdsfd.com".matches("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+"));//true                 //matches() find() lookingAt()         Pattern p = Pattern.compile("[url=file://\\d{3,5]\\d{3,5[/url]}");         Matcher m = p.matcher("123-34345-234-00");                 //将整个"123-34345-234-00"用正则表达式引擎查找匹配,当到第一个"-"不匹配了,就停止,         //但不会将不匹配的"-"吐出来         p(m.matches());         //将不匹配的"-"吐出来         m.reset();                 //1:当前面有p(m.matches());查找子字符串从"...34345-234-00"开始         //将会是第1,2两个查到"34345"和"234" 后面2个查不到为false         //2:当前面有p(m.matches());和m.reset();查找子字符串从"123-34345-234-00"开始         //将为true,true,true,false         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());         //要是没找到就会报异常java.lang.IllegalStateException         //p(m.start()+"---"+m.end());                 p(m.lookingAt());         p(m.lookingAt());         p(m.lookingAt());         p(m.lookingAt()); 字符串替换:下面这种方法对于字符串替换非常灵活         //字符串替换         //Pattern.CASE_INSENSITIVE大小写不敏感         Pattern p = Pattern.compile("java",Pattern.CASE_INSENSITIVE);         Matcher m = p.matcher("java Java jAva ILoveJavA youHateJAVA adsdsfd");         //存放字符串         StringBuffer  buf = new StringBuffer();         //计数奇偶数         int i  = 0;         while(m.find()){             i++;             if(i%2 == 0){                 m.appendReplacement(buf, "java");             }else{                 m.appendReplacement(buf, "JAVA");             }         }         //不加这句话,字符串adsdsfd将会被遗弃         m.appendTail(buf);         p(buf); 结果打印: JAVA java JAVA ILovejava youHateJAVA adsdsfd 分组         //group分组,用()分组         Pattern p = Pattern.compile("([url=file://\\d{3,5})([a-z]{2]\\d{3,5})([a-z]{2[/url]})");         String s = "123aa-34345bb-234cc-00";         Matcher m = p.matcher(s);         p(m.groupCount());//2组         while(m.find()){             p(m.group());//数字字母都有             //p(m.group(1));//只有数字             //p(m.group(2));//只有字母         } 二、正则表达式简单使用 [url=http://www.1sucai.cn/article/72603.htm]java正则表达式使用[/url]
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部