问题描述
我用Java提取网页标题时内容不全<title>Ta1bleofContents(目录)(页1)-默认版块-Discuz!Board-PoweredbyDiscuz!Archiver</title>下面是正则Stringregex="<title>([^</title>]*)";Patternpattern=Pattern.compile(regex,Pattern.DOTALL);Matchermatcher=pattern.matcher(buffer.toString());while(matcher.find()){System.out.println(matcher.group(1).trim());}结果为Ta1bleof后面的内容全都丢了好奇怪??
解决方案
解决方案二:
答案很显然:([^</title>]*)";表示<title>之后,不为空格,不为<,/,T,l,e>的字符能匹配,所以到了能匹配到:<title>Ta1b后面的l就不能匹配上了!搂住为何不这样做,考虑title会空格和换行,加/r/n应该可以搞定Stringsrc="<title>Ta1bleofContents(目录)(页1)-默认版块-Discuz!Board-PoweredbyDiscuz!Archiver</title>";Stringregex="<title>(.*)</title>";Patternpattern=Pattern.compile(regex);Matchermatcher=pattern.matcher(src);while(matcher.find()){System.out.println(matcher.group(1).trim());break;}
解决方案三:
哦,原来如此啊,我原来还以为</title>是一个整体,只要是非</title>之前的都能匹配,谢谢高手,我还是正则个初学者
解决方案四:
RegexBuddy这个工具挺好用的,调试正则表达式,很省事。
解决方案五:
谢谢,这个软件真的很好用,以前用RegexTester.exe老是出问题
解决方案六:
学习一下