<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.0.4" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>评论：Java正则表达式的性能问题</title>
	<link>http://www.jiehoo.com/java-regex-performance-problem.htm</link>
	<description>解己之惑，解人之惑</description>
	<pubDate>Wed, 07 Jan 2009 14:26:02 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.4</generator>

	<item>
		<title>来自：上海政府补贴培训网 &#187; Java正则表达式的性能问题</title>
		<link>http://www.jiehoo.com/java-regex-performance-problem.htm#comment-3299</link>
		<pubDate>Wed, 30 Apr 2008 04:43:14 +0000</pubDate>
		<guid>http://www.jiehoo.com/java-regex-performance-problem.htm#comment-3299</guid>
					<description>[...] &#60;!-- if (window.location.href.indexOf("http://www.jiehoo.com/")!=0) { window.location="http://www.jiehoo.com/java-regex-performance-problem.htm"; } //--&#62; [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] &lt;!&#8211; if (window.location.href.indexOf(&#8221;http://www.jiehoo.com/&#8221;)!=0) { window.location=&#8221;http://www.jiehoo.com/java-regex-performance-problem.htm&#8221;; } //&#8211;&gt; [&#8230;]
</p>
]]></content:encoded>
				</item>
	<item>
		<title>来自：解惑 &#187; 日志 &#187; matches和find的用法</title>
		<link>http://www.jiehoo.com/java-regex-performance-problem.htm#comment-59</link>
		<pubDate>Wed, 22 Nov 2006 04:02:24 +0000</pubDate>
		<guid>http://www.jiehoo.com/java-regex-performance-problem.htm#comment-59</guid>
					<description>[...] Matcher类有几个进行匹配的方法，一个是matches，一个是find，前者是将整个输入和表达式进行匹配，而后者只是查找匹配的部分，只要找到匹配的就返回。一个典型的应用就是分析SQL，我们写一个表达式先判断整个SQL是否匹配表达式，如果匹配的话就要进行分析，取出我们想要的部分，但是WHERE条件部分有很多条件，使用group只能取到最后一次匹配的部分（参考以前写的Java正则表达式的性能问题 ），这个时候就要针对条件再写一个表达式，使用find查找所有的条件了，代码片断如下：   &#160;&#160;&#160; public Query parse(String query) &#160;&#160;&#160; { &#160;&#160;&#160;&#160;&#160;&#160;&#160; Matcher matcher = pattern.matcher(query); &#160;&#160;&#160;&#160;&#160;&#160;&#160; if (!matcher.matches()) &#160;&#160;&#160;&#160;&#160;&#160;&#160; { &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return null; &#160;&#160;&#160;&#160;&#160;&#160;&#160; } &#160;&#160;&#160;&#160;&#160;&#160;&#160; else &#160;&#160;&#160;&#160;&#160;&#160;&#160; { &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Query result = null; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; try &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; { &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; result = doParse(matcher); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; } &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; catch (Exception e) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; { &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; log.error(&#34;Parse finder sql error!&#34;,e); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; } &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; result.setSql(query); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; log.debug(result); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return result; &#160;&#160;&#160;&#160;&#160;&#160;&#160; } &#160;&#160;&#160; } [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] Matcher类有几个进行匹配的方法，一个是matches，一个是find，前者是将整个输入和表达式进行匹配，而后者只是查找匹配的部分，只要找到匹配的就返回。一个典型的应用就是分析SQL，我们写一个表达式先判断整个SQL是否匹配表达式，如果匹配的话就要进行分析，取出我们想要的部分，但是WHERE条件部分有很多条件，使用group只能取到最后一次匹配的部分（参考以前写的Java正则表达式的性能问题 ），这个时候就要针对条件再写一个表达式，使用find查找所有的条件了，代码片断如下：   &nbsp;&nbsp;&nbsp; public Query parse(String query) &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Matcher matcher = pattern.matcher(query); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!matcher.matches()) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return null; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Query result = null; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = doParse(matcher); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (Exception e) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log.error(&quot;Parse finder sql error!&quot;,e); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result.setSql(query); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log.debug(result); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return result; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; } [&#8230;]
</p>
]]></content:encoded>
				</item>
</channel>
</rss>
