免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2129 | 回复: 2
打印 上一主题 下一主题

java中使用正则表达式的疑问。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-09-25 10:53 |只看该作者 |倒序浏览

  我在php已经接触过正则表达式了,我想对于java中正则表达式的原理应该是相同,只是书写习惯不同。
我现在看了部分java中正则表达式的代码和资料,好像用起来比php书写复杂。还要循环比配,不是像php中一句话就行。有点不爽(我pearl的正则表达式没有用过,是否与php相似?)

在Sun的Java JDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包。 哪里有java。改包的说明手册。
很多介绍是第三方的正则表达式的应用。郁闷!

急需Patten和matcher类和方法的完整参考http://jspcn.net/htmlnews/600100423.html

对正则表达式感兴趣希望在下面加帖哦。(我也会不断增加内容的)

论坛徽章:
0
2 [报告]
发表于 2005-09-25 14:51 |只看该作者

java中使用正则表达式的疑问。

(参考:
http://www.yesky.com/428/1706928.shtml
http://www.360doc.com/showWeb/0/0/12321.aspx
http://www.360doc.com/showWeb/0/0/12613.aspx     ok
http://chinaunix.net/jh/26/154483.html
http://jspcn.net/htmlnews/600100423.html
http://www-128.ibm.com/developerworks/cn/java/l-regp/part2/index.html     okjava.util.regex篇
http://publish.it168.com/2005/0915/20050915022401.shtml?positioncode=1671

在java使用正则表达式注意事项:(个人总结,主要指java自带java.util.regex类库包的应用)
1。Matcher类的方法:boolean matches()
尝试对整个目标字符展开匹配检测,也就是只有整个目标字符串完全匹配时才返回真值。
表现模式:   被匹配字符串:     匹配情况
ab                aaafdfaaab          flase
a*b            aaafdfaaab            true

3.String replaceAll(String replacement)
将目标字符串里与既有模式相匹配的子串全部替换为指定的字符串。
表现模式:   被匹配字符串:   替代词   匹配结果
ab                aaabfdfaaab                #            aa#fdfaa#
a*b            aaabfdfaaab                  #            #fdf#

2。Matcher appendReplacement(StringBuffer sb, String replacement)
将当前匹配子串替换为指定字符串,并且将替换后的子串以及其之前到上次匹配子串之后的字符串段添加到一个StringBuffer对象里。
似乎有些不懂。
replaceAll()与replaceFirst()的用法都比较简单,请看上面方法的解释。我们主要重点了解一下appendReplacement()和appendTail()方法。

appendReplacement(StringBuffer sb, String replacement) 将当前匹配子串替换为指定字符串,并且将替换后的子串以及其之前到上次匹配子串之后的字符串段添加到一个StringBuffer对象里,而appendTail(StringBuffer sb) 方法则将最后一次匹配工作后剩余的字符串添加到一个StringBuffer对象里。

例如,有字符串fatcatfatcatfat,假设既有正则表达式模式为"cat",第一次匹配后调用appendReplacement(sb,"dog",那么这时StringBuffer sb的内容为fatdog,也就是fatcat中的cat被替换为dog并且与匹配子串前的内容加到sb里,而第二次匹配后调用appendReplacement(sb,"dog",那么sb的内容就变为fatdogfatdog,如果最后再调用一次appendTail(sb),那么sb最终的内容将是fatdogfatdogfat。

2。boolean find()
尝试在目标字符串里查找下一个匹配子串。
不是所有的。
★group()/group(int group)/groupCount():
该系列方法与我们在上篇介绍的Jakarta-ORO中的MatchResult .group()方法类似(有关Jakarta-ORO请参考上篇的内容),都是要返回与组匹配的子串内容,下面代码将很好解释其用法:

import java.util.regex.*;

public class GroupTest{
    public static void main(String[] args)
                         throws Exception {
        Pattern p = Pattern.compile("(ca)(t)";        
        Matcher m = p.matcher("one cat,two cats in the yard";
        StringBuffer sb = new StringBuffer();
        boolean result = m.find();
        System.out.println("该次查找获得匹配组的数量为:"+m.groupCount());
        for(int i=1;i<=m.groupCount();i++){
         System.out.println("第"+i+"组的子串内容为: "+m.group(i));
        }
    }
}


输出为:
该次查找获得匹配组的数量为:2
第1组的子串内容为:ca
第2组的子串内容为:t


String[] split(CharSequence input)
将目标字符串按照Pattern里所包含的正则表达式为模进行分割。
String[] split(CharSequence input, int limit)
作用同上,增加参数limit目的在于要指定分割的段数,如将limi设为2,那么目标字符串将根据正则表达式分为割为两段。
按照pattern找到再分割。


Pattern pattern()
返回该Matcher对象的现有匹配模式,也就是对应的Pattern 对象。

论坛徽章:
0
3 [报告]
发表于 2005-09-25 16:18 |只看该作者

java中使用正则表达式的疑问。

首先熟悉,java的正则表达哦,一些试验代码。。。

import java.util.regex.*;
class test{
   public static void main(String args[]) {
         String regEx="a*b";
         String thisURL="http://localhost/houqing/test.asp";   //表示a或f
         String Webtext="For my money, the important thing "+"about the meeting was bridge-building";
         boolean b;
         boolean result;
         //------读该网页的全文,
         ReadURLfile myURLfile =new ReadURLfile();
         Webtext=myURLfile.getURL(thisURL);
          //------结束-------------,
         System.out.println(Webtext);
         Pattern p=Pattern.compile(regEx);
         Matcher m=p.matcher(Webtext);//理解成创建匹配器
         b=m.matches();
         System.out.println(b+"<br>;";
         if(m.find())
         {
             System.out.println(m.group()+"<44";
         }
    }
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP