锁定老帖子 主题:一个正则表达式的问题.
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-04-20
String needToMatch = "<table><tr>fadsf</tr><tr>dafqewrdf</tr></table>"; Pattern p = Pattern.compile("\\Q<tr>\\E.*\\Q</tr>\\E"); Matcher matcher = p.matcher(needToMatch); while(matcher.find()){ System.out.println("I found the text \"" + matcher.group() + "\" starting at index " + matcher.start() + " and ending at index " + matcher.end() + "."); } 得到的是 I found the text "<tr>fadsf</tr><tr>dafqewrdf</tr>" starting at index 7 and ending at index 39. 其实我想解析成<tr>fadsf</tr> 和 <tr>dafqewrdf</tr> 请问这个正则表达式该怎么写呢? thanks 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-04-20
又见贪婪
|
|
返回顶楼 | |
发表时间:2006-04-20
Pattern p = Pattern.compile("\\Q<tr>\\E.*?\\Q</tr>\\E");; 其实还是jakarta 的oro模块好用,更符合perl的习惯 sun实现的正则表达式不伦不类的,当然还是能用的 |
|
返回顶楼 | |
发表时间:2006-04-20
引用 java代码:
Pattern p = Pattern.compile("\\Q<tr>\\E.*?\\Q</tr>\\E"); 谢谢, 看了sun网站上的java tutorial的正则表达式这张. 对这节不是很清楚 http://java.sun.com/docs/books/tutorial/extra/regex/quant.html Current REGEX is: .*foo // greedy quantifier Current INPUT is: xfooxxxxxxfoo I found the text "xfooxxxxxxfoo" starting at index 0 and ending at index 13. Current REGEX is: .*?foo // reluctant quantifier Current INPUT is: xfooxxxxxxfoo I found the text "xfoo" starting at index 0 and ending at index 4. I found the text "xxxxxxfoo" starting at index 4 and ending at index 13. Current REGEX is: .*+foo // possessive quantifier Current INPUT is: xfooxxxxxxfoo No match found. 茅塞顿开! |
|
返回顶楼 | |
发表时间:2006-04-20
推荐一个写正则的插件QuickRex:
http://prdownloads.sourceforge.net/easyeclipse/eclipseplugin-quickrex-2.0.0.tar.gz 请教一下,那个\Q和\E有什么用? |
|
返回顶楼 | |
发表时间:2006-04-21
引用 请教一下,那个\Q和\E有什么用? 避免context中有特殊意义的字符, * { () .... |
|
返回顶楼 | |
发表时间:2006-04-21
你在用greedy mode,用lazy mode就解决问题啦
jakarta ORO 的使用方法: <tr>.*?</tr> hoho,前两天刚看了 sams.teach.yourself.regular.expressions.in.10.minutes |
|
返回顶楼 | |
发表时间:2006-04-21
dengyin2000 写道 引用 请教一下,那个\Q和\E有什么用? 避免context中有特殊意义的字符, * { () .... \\Q<tr>\\E.*?\\Q</tr>\\E 没感觉有啥作用。。。能详细解释一下吗? |
|
返回顶楼 | |
发表时间:2006-04-21
hongliang 写道 dengyin2000 写道: 引用: 请教一下,那个\Q和\E有什么用? 避免context中有特殊意义的字符, * { () .... \\Q<tr>\\E.*?\\Q</tr>\\E 没感觉有啥作用。。。能详细解释一下吗? String s = "abc*def*ghj"; 试试System.out.println(s.split("*")); |
|
返回顶楼 | |
发表时间:2006-04-21
dengyin2000 写道 hongliang 写道 dengyin2000 写道: 引用: 请教一下,那个\Q和\E有什么用? 避免context中有特殊意义的字符, * { () .... \\Q<tr>\\E.*?\\Q</tr>\\E 没感觉有啥作用。。。能详细解释一下吗? String s = "abc*def*ghj"; 试试System.out.println(s.split("*")); 怎么能这么写呢?应该是System.out.println(s.split("\\*"));吧 |
|
返回顶楼 | |