`
dengyin2000
  • 浏览: 1226854 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

一个正则表达式的问题.

阅读更多
		
		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
分享到:
评论
13 楼 yfmine 2006-04-22  
学到了\Q\E,多谢.
推荐一本书:&lt;C#字符串和正则表达式参考手册&gt;
一个工具:The Regulator  http://regex.osherove.com/
12 楼 hongliang 2006-04-21  
明白叻。。。
11 楼 dengyin2000 2006-04-21  
引用
你在用greedy mode,用lazy mode就解决问题啦
jakarta ORO 的使用方法: &lt;tr&gt;.*?&lt;/tr&gt;
hoho,前两天刚看了
sams.teach.yourself.regular.expressions.in.10.minutes


下了这本书, 这个星期回家看看. 10分钟能看完么? 我英语好烂呀
10 楼 dengyin2000 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("\\*"));吧
dengyin2000
文章时间: 2006-4-21 周五, 下午1:26    标题:
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("*"));


假如 s = "abc*.def*.ghj" 呢  你是不是要  s.split("\\*\\.")这样呢? 万一有更多的保留字符呢 ? 用\Q\E吧. s.split("\\Q*.\\E")
9 楼 hongliang 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("\\*"));吧
8 楼 dengyin2000 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("*"));
7 楼 hongliang 2006-04-21  
dengyin2000 写道
引用

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


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


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

没感觉有啥作用。。。能详细解释一下吗?
6 楼 yatwql 2006-04-21  
你在用greedy mode,用lazy mode就解决问题啦
jakarta ORO 的使用方法: &lt;tr&gt;.*?&lt;/tr&gt;
hoho,前两天刚看了
sams.teach.yourself.regular.expressions.in.10.minutes
5 楼 dengyin2000 2006-04-21  
引用

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


避免context中有特殊意义的字符, * { () ....
4 楼 hongliang 2006-04-20  
推荐一个写正则的插件QuickRex:

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

请教一下,那个\Q和\E有什么用?
3 楼 dengyin2000 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.

茅塞顿开!
2 楼 scud 2006-04-20  
Pattern p = Pattern.compile("\\Q<tr>\\E.*?\\Q</tr>\\E");; 



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

sun实现的正则表达式不伦不类的,当然还是能用的
1 楼 scud 2006-04-20  
又见贪婪

相关推荐

    Regular_Expression正则表达式手册.zip

    Regular_Expression正则表达式手册.zipRegular_Expression正则表达式手册.zipRegular_Expression正则表达式手册.zipRegular_Expression正则表达式手册.zip

    正则表达式.rar 正则表达式.rar

    4. **分组(Groups)**:使用`( )`将多个字符组合成一个单元,可以方便地应用量词和选择。 5. **选择(Alternation)**:使用`|`符号表示或的关系,如`a|b`匹配'a'或'b'。 6. **锚点(Anchors)**:`^`表示行首,`$`...

    正则表达式大全.docx

    正则表达式是一种强大的文本处理工具,用于在字符串中进行模式匹配和搜索替换操作。它由特殊字符(称为“元字符”)和普通字符组成,能够灵活地定义要查找的模式。以下是一些常见的正则表达式模式及其用途: 1. ...

    java正则表达式.zip

    Pattern类是Java正则表达式的起点,它将一个正则表达式编译成一个模式对象。这个编译过程可以优化后续的匹配操作。例如,创建Pattern对象的代码如下: ```java Pattern pattern = Pattern.compile("正则表达式"); `...

    易语言模块彗星正则表达式类.rar

    在这个"易语言模块彗星正则表达式类.rar"压缩包中,包含的是一个专门用于处理正则表达式的易语言模块,名为"模块彗星正则表达式类"。 正则表达式,简称regex,是一种强大的文本处理工具,广泛应用于数据验证、文本...

    正则表达式chm.zip

    本资料"正则表达式.chm"是一个关于正则表达式的CHM(Microsoft HTML Help)文件,可能包含了详细的教程和参考资料,帮助用户深入理解和掌握正则表达式。 正则表达式的基本概念: 1. **元字符**:这些特殊的字符如`....

    正则表达式工具.zip

    在这个“正则表达式工具.zip”压缩包中,包含了一个工具,它能帮助开发者自动生成常见的正则表达式,简化了编写正则表达式的复杂过程。 正则表达式的基本概念: 1. **字符集**:如`[abc]`,匹配任何一个在方括号内...

    第11.25节 Python正则表达式编译re.compile及正则对象使用.rar

    `re.compile(pattern, flags=0)`函数接收一个字符串`pattern`作为参数,返回一个正则表达式对象。这个对象可以被用来执行各种正则表达式操作,如匹配、查找、替换等。`flags`参数是可选的,用于设置匹配模式,例如...

    正则表达式.rar || 正则表达式.rar

    1. 元字符:正则表达式中包含一些特殊字符,如"."(匹配任意字符,除了换行符)、"*"(匹配前一个字符0次或无限次)、"+"(匹配前一个字符1次或无限次)、"?"(匹配前一个字符0次或1次)等,它们称为元字符,具有...

    regex-正则表达式教程.pdf

    例如,正则表达式"regex|regex not"在正则导向的引擎上应用于字符串"regex not"时,会返回"regex"作为第一个匹配项。 了解正则表达式的内部工作机制对于编写正确和高效的正则表达式至关重要。通过学习这个教程,...

    正则表达式方法.png

    正则表达式方法.png

    TutorialsPoint 正则表达式教程.epub

    TutorialsPoint 正则表达式教程.epub

    java正则表达式使用.docx

    java正则表达式使用.docx 资源

    Python正则表达式字符.xlsx

    Python正则表达式字符.xlsx

    史上最好的正则表达式教程.pdf

    根据提供的文件内容,以下为详细的正则...总之,正则表达式是一种灵活性极高的文本处理工具,它适用于多种编程语言和文本处理环境,学习并掌握它的使用对于提高工作效率和解决复杂的文本匹配问题具有极其重要的作用。

    韩顺平 深入浅出 js第十一章 正则表达式详解.ppt

    正则表达式详解.ppt js 深入理解正则表达式应用 深入浅出

    正则表达式全集.rar

    该资料包有正则表达式教程.chm,精通正则表达式-第三版(CHM电子版.3rd.Edition.Aug.2006.chm,表单验证Validator v1.0.chm以及一些关于正则表达式的网页...相信大家看了,肯定会对正则表达式有一个全面而深入的理解。

    “正则表达式”教程.rar

    例如,可以使用`正则表达式匹配`命令来测试一个字符串是否符合某个正则表达式,`正则表达式提取`命令用于从字符串中提取匹配的部分。理解这些函数的用法是学习易语言正则表达式的关键。 本教程将详细讲解如何构建...

    水淼·正则表达式助手.zip

    这款助手软件提供了一个友好的用户界面,帮助用户更加高效地构建、测试和理解正则表达式。 正则表达式的基本概念是通过特定的字符模式匹配和操作文本。例如,"."代表任意单个字符,"*"表示前面的字符可以重复任意次...

Global site tag (gtag.js) - Google Analytics