论坛首页 Java企业应用论坛

一个正则表达式的问题.

浏览 6166 次
精华帖 (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
   发表时间:2006-04-20  
又见贪婪
0 请登录后投票
   发表时间:2006-04-20  
Pattern p = Pattern.compile("\\Q<tr>\\E.*?\\Q</tr>\\E");; 



其实还是jakarta 的oro模块好用,更符合perl的习惯

sun实现的正则表达式不伦不类的,当然还是能用的
0 请登录后投票
   发表时间:2006-04-20  
引用
java代码:


Pattern p = Pattern.compile("\\Q&lt;tr&gt;\\E.*?\\Q&lt;/tr&gt;\\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.

茅塞顿开!
0 请登录后投票
   发表时间:2006-04-20  
推荐一个写正则的插件QuickRex:

http://prdownloads.sourceforge.net/easyeclipse/eclipseplugin-quickrex-2.0.0.tar.gz

请教一下,那个\Q和\E有什么用?
0 请登录后投票
   发表时间:2006-04-21  
引用

请教一下,那个\Q和\E有什么用?


避免context中有特殊意义的字符, * { () ....
0 请登录后投票
   发表时间:2006-04-21  
你在用greedy mode,用lazy mode就解决问题啦
jakarta ORO 的使用方法: &lt;tr&gt;.*?&lt;/tr&gt;
hoho,前两天刚看了
sams.teach.yourself.regular.expressions.in.10.minutes
0 请登录后投票
   发表时间:2006-04-21  
dengyin2000 写道
引用

请教一下,那个\Q和\E有什么用?


避免context中有特殊意义的字符, * { () ....


\\Q&lt;tr&gt;\\E.*?\\Q&lt;/tr&gt;\\E

没感觉有啥作用。。。能详细解释一下吗?
0 请登录后投票
   发表时间:2006-04-21  
hongliang 写道

dengyin2000 写道:
引用:

请教一下,那个\Q和\E有什么用?


避免context中有特殊意义的字符, * { () ....


\\Q&lt;tr&gt;\\E.*?\\Q&lt;/tr&gt;\\E

没感觉有啥作用。。。能详细解释一下吗?


String s = "abc*def*ghj";
试试System.out.println(s.split("*"));
0 请登录后投票
   发表时间:2006-04-21  
dengyin2000 写道
hongliang 写道

dengyin2000 写道:
引用:

请教一下,那个\Q和\E有什么用?


避免context中有特殊意义的字符, * { () ....


\\Q&lt;tr&gt;\\E.*?\\Q&lt;/tr&gt;\\E

没感觉有啥作用。。。能详细解释一下吗?


String s = "abc*def*ghj";
试试System.out.println(s.split("*"));


怎么能这么写呢?应该是System.out.println(s.split("\\*"));吧
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics