在JAVA中使用正则表达式

4/7/2006来源:Java认证人气:8589

jdk1.4中加入了java.util.regex包提供对正则表达式的支持。而且Java.lang.String类中的replaceAll和split函数也是调用的正则表达式来实现的。

  正则表达式对字符串的操作主要包括:字符串匹配,指定字符串替换,指定字符串查找和字符串分割。下面就用一个例子来说明这些操作是如何实现的:

   < %@ page import=\"java.util.regex.*\"%>

   < %

   Pattern p=null; //正则表达式

   Matcher m=null; //操作的字符串

   boolean b;

   String s=null;

   StringBuffer sb=null;

   int i=0;

   //字符串匹配,这是不符合的

   p = Pattern.compile(\"a*b\");

   m = p.matcher(\"baaaaab\");

   b = m.matches();

   out.PRintln(b+\"< br>\");

   //字符串匹配,这是符合的

   p = Pattern.compile(\"a*b\");

   m = p.matcher(\"aaaaab\");

   b = m.matches();

   out.println(b+\"< br>\");

   //字符串替换

   p = Pattern.compile(\"ab\");

   m = p.matcher(\"aaaaab\");

   s = m.replaceAll(\"d\");

   out.println(s+\"< br>\");

   p = Pattern.compile(\"a*b\");

   m = p.matcher(\"aaaaab\");

   s = m.replaceAll(\"d\");

   out.println(s+\"< br>\");

   p = Pattern.compile(\"a*b\");
   m = p.matcher(\"caaaaab\");

   s = m.replaceAll(\"d\");

   out.println(s+\"< br>\");

   //字符串查找

   p = Pattern.compile(\"cat\");

   m = p.matcher(\"one cat two cats in the yard\");

   sb = new StringBuffer();

   while (m.find()) {

m.appendReplacement(sb, \"dog\");

i++;

   }

   m.appendTail(sb);

   out.println(sb.toString()+\"< br>\");

   out.println(i+\"< br>\");

   i=0;
   p = Pattern.compile(\"cat\");

   m = p.matcher(\"one cat two ca tsi nthe yard\");

   sb = new StringBuffer();

   while (m.find()) {

m.appendReplacement(sb, \"dog\");

i++;

   }

   m.appendTail(sb);

   out.println(sb.toString()+\"< br>\");

   out.println(i+\"< br>\");





   p = Pattern.compile(\"cat\");

   m = p.matcher(\"one cat two cats in the yard\");

   p=m.pattern();

   m = p.matcher(\"bacatab\");

   b = m.matches();

   out.println(b+\"< br>\");

   s = m.replaceAll(\"dog\");

   out.println(s+\"< br>\");



   i=0;

   p = Pattern.compile(\"(fds){2,}\");

   m = p.matcher(\"dsa da fdsfds aaafdsafds aaf\");

   sb = new StringBuffer();

   while (m.find()) {

m.appendReplacement(sb, \"dog\");

i++;

   }

   m.appendTail(sb);

   out.println(sb.toString()+\"< br>\");

   out.println(i+\"< br>\");



   p = Pattern.compile(\"cat\");

   m = p.matcher(\"one cat two cats in the yard\");

   sb = new StringBuffer();

   while (m.find()) {

m.appendReplacement(sb, \" cat \");

   }

   m.appendTail(sb);

   out.println(sb.toString()+\"< br>\");

   String aa=sb.toString();

   out.println(aa+\"< br>\");

   //字符串分割

   p = Pattern.compile(\"a+\");

   String[] a=p.split(\"caaaaaat\");

   for(i=0;i
   {

   out.println(a[i]+\"< br>\");

   }

   p = Pattern.compile(\"a+\");

   a=p.split(\"c aa aaaa t\",0);

   for(i=0;i

   {

   out.println(a[i]+\"< br>\");

   }

   p = Pattern.compile(\" +\");

   a=p.split(\"c aa aaaa t\",0);

   for(i=0;i

   {

   out.println(a[i]+\"< br>\");

   }

   p = Pattern.compile(\"\\\\+\");

   a=p.split(\"dsafasdfdsafsda+dsagfasdfa+sdafds\");

   out.println(a.length+\"< br>\");

   for(i=0;i

   {

   out.println(a[i]+\"< br>\");

   }

   %>