<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Colin Says &#187; 保洁公司</title>
	<atom:link href="http://blog.wxseo.com/tag/%e4%bf%9d%e6%b4%81%e5%85%ac%e5%8f%b8/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.wxseo.com</link>
	<description>我的生存想法及实施</description>
	<lastBuildDate>Thu, 11 Nov 2010 07:39:45 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>用正则表达式来搜索</title>
		<link>http://blog.wxseo.com/search-using-regular-expressio/</link>
		<comments>http://blog.wxseo.com/search-using-regular-expressio/#comments</comments>
		<pubDate>Sun, 15 Feb 2009 09:44:51 +0000</pubDate>
		<dc:creator>wxseo</dc:creator>
				<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[保洁公司]]></category>
		<category><![CDATA[无锡百科]]></category>

		<guid isPermaLink="false">http://blog.wxseo.com/?p=36</guid>
		<description><![CDATA[正则表达式（regular expression）就是用一个“字符串”来描述一个特征，然后去验证另一个“字符串”是否符合这个特征。
这段时间在建设无锡百科中的无锡保洁公司大全目录，一个人的力量是渺小的，但能正确利用工具，把效率提高，那力量可是强大的，这不，用Teleport Pro花了2个小时时间，下载了30个相关的保洁公司网站，这可是建立百科的第一步，结果发现用此工具下载的网站里面所有的图片，连接，只要用上调用外部资源的都给加上 tppabs=&#8221;****&#8221; 等不规则标签，这可难住了，利用普通查找替换由于&#8221;****&#8221;部分各不相同，所以无法进行。
有问题，找GOOGLE
答案马上来了，利用正则表达式的匹配功能进行，详细如下：
一些不便书写的字符，采用在前面加 &#8220;\&#8221; 的方法。这些字符其实我们都已经熟知了。



表达式
可匹配


\r, \n
代表回车和换行符


\t
制表符


\\
代表 &#8220;\&#8221; 本身



还有其他一些在后边章节中有特殊用处的标点符号，在前面加 &#8220;\&#8221; 后，就代表该符号本身。比如：^, $ 都有特殊意义，如果要想匹配字符串中 &#8220;^&#8221; 和 &#8220;$&#8221; 字符，则表达式就需要写成 &#8220;\^&#8221; 和 &#8220;\$&#8221;。




表达式
可匹配


\^
匹配 ^ 符号本身


\$
匹配 $ 符号本身


\.
匹配小数点（.）本身



正则表达式中的一些表示方法，可以匹配 &#8216;多种字符&#8217; 其中的任意一个字符。比如，表达式 &#8220;\d&#8221; 可以匹配任意一个数字。虽然可以匹配其中任意字符，但是只能是一个，不是多个。这就好比玩扑克牌时候，大小王可以代替任意一张牌，但是只能代替一张牌。



表达式
可匹配


\d
任意一个数字，0~9 中的任意一个


\w
任意一个字母或数字或下划线，也就是 A~Z,a~z,0~9,_ 中任意一个


\s
包括空格、制表符、换页符等空白字符的其中任意一个


.
小数点可以匹配除了换行符（\n）以外的任意一个字符



使用方括号 [ ] 包含一系列字符，能够匹配其中任意一个字符。用 [^ ] 包含一系列字符，则能够匹配其中字符之外的任意一个字符。同样的道理，虽然可以匹配其中任意一个，但是只能是一个，不是多个。



表达式
可匹配


[ab5@]
匹配 &#8220;a&#8221; 或 &#8220;b&#8221; 或 &#8220;5&#8243; 或 &#8220;@&#8221;


[^abc]
匹配 &#8220;a&#8221;,&#8221;b&#8221;,&#8221;c&#8221; 之外的任意一个字符


[f-k]
匹配 &#8220;f&#8221;~&#8221;k&#8221; 之间的任意一个字母


[^A-F0-3]
匹配 &#8220;A&#8221;~&#8221;F&#8221;,&#8221;0&#8243;~&#8221;3&#8243; 之外的任意一个字符



使用方法是：&#8221;次数修饰&#8221;放在&#8221;被修饰的表达式&#8221;后边。比如：&#8221;[bcd][bcd]&#8221; 可以写成 &#8220;[bcd]{2}&#8221;。



表达式
作用


{n}
表达式重复n次，比如：&#8221;\w{2}&#8221; 相当于 &#8220;\w\w&#8221;；&#8221;a{5}&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p><em><span style="font-style: normal;">正则表达式</span></em>（regular expression）就是用一个“字符串”来描述一个特征，然后去验证另一个“字符串”是否符合这个特征。</p>
<p>这段时间在建设<a href="http://www.wxseo.com/">无锡百科</a>中的<a class="wp-caption" title="无锡保洁公司" href="http://bj.wxseo.com/">无锡保洁公司</a>大全目录，一个人的力量是渺小的，但能正确利用工具，把效率提高，那力量可是强大的，这不，用Teleport Pro花了2个小时时间，下载了30个相关的保洁公司网站，这可是建立百科的第一步，结果发现用此工具下载的网站里面所有的图片，连接，只要用上调用外部资源的都给加上 tppabs=&#8221;****&#8221; 等不规则标签，这可难住了，利用普通查找替换由于&#8221;****&#8221;部分各不相同，所以无法进行。</p>
<blockquote><p>有问题，找GOOGLE</p></blockquote>
<p>答案马上来了，利用正则表达式的匹配功能进行，详细如下：</p>
<p>一些不便书写的字符，采用在前面加 &#8220;\&#8221; 的方法。这些字符其实我们都已经熟知了。</p>
<table border="1" cellspacing="0" cellpadding="3" bgcolor="#f8f8f8">
<tbody>
<tr bgcolor="#f0f0f0">
<td width="70">表达式</td>
<td>可匹配</td>
</tr>
<tr>
<td>\r, \n</td>
<td>代表回车和换行符</td>
</tr>
<tr>
<td>\t</td>
<td>制表符</td>
</tr>
<tr>
<td>\\</td>
<td>代表 &#8220;\&#8221; 本身</td>
</tr>
</tbody>
</table>
<p>还有其他一些在后边章节中有特殊用处的标点符号，在前面加 &#8220;\&#8221; 后，就代表该符号本身。比如：^, $ 都有特殊意义，如果要想匹配字符串中 &#8220;^&#8221; 和 &#8220;$&#8221; 字符，则表达式就需要写成 &#8220;\^&#8221; 和 &#8220;\$&#8221;。</p>
<p><span id="more-36"></span></p>
<table border="1" cellspacing="0" cellpadding="3" bgcolor="#f8f8f8">
<tbody>
<tr bgcolor="#f0f0f0">
<td width="66">表达式</td>
<td>可匹配</td>
</tr>
<tr>
<td>\^</td>
<td>匹配 ^ 符号本身</td>
</tr>
<tr>
<td>\$</td>
<td>匹配 $ 符号本身</td>
</tr>
<tr>
<td>\.</td>
<td>匹配小数点（.）本身</td>
</tr>
</tbody>
</table>
<p>正则表达式中的一些表示方法，可以匹配 &#8216;多种字符&#8217; 其中的任意一个字符。比如，表达式 &#8220;\d&#8221; 可以匹配任意一个数字。虽然可以匹配其中任意字符，但是只能是一个，不是多个。这就好比玩扑克牌时候，大小王可以代替任意一张牌，但是只能代替一张牌。</p>
<table border="1" cellspacing="0" cellpadding="3" bgcolor="#f8f8f8">
<tbody>
<tr bgcolor="#f0f0f0">
<td width="66">表达式</td>
<td>可匹配</td>
</tr>
<tr>
<td><span id="pattern"><span style="color: #000000;"><span style="color: #900050;">\d</span></span></span></td>
<td>任意一个数字，0~9 中的任意一个</td>
</tr>
<tr>
<td><span id="pattern"><span style="color: #000000;"><span style="color: #900050;">\w</span></span></span></td>
<td>任意一个字母或数字或下划线，也就是 A~Z,a~z,0~9,_ 中任意一个</td>
</tr>
<tr>
<td><span id="pattern"><span style="color: #000000;"><span style="color: #900050;">\s</span></span></span></td>
<td>包括空格、制表符、换页符等空白字符的其中任意一个</td>
</tr>
<tr>
<td><span id="pattern"><span style="color: #000000;"><span style="color: #900050;">.</span></span></span></td>
<td>小数点可以匹配除了换行符（\n）以外的任意一个字符</td>
</tr>
</tbody>
</table>
<p>使用方括号 [ ] 包含一系列字符，能够匹配其中任意一个字符。用 [^ ] 包含一系列字符，则能够匹配其中字符之外的任意一个字符。同样的道理，虽然可以匹配其中任意一个，但是只能是一个，不是多个。</p>
<table border="1" cellspacing="0" cellpadding="3" bgcolor="#f8f8f8">
<tbody>
<tr bgcolor="#f0f0f0">
<td width="80">表达式</td>
<td>可匹配</td>
</tr>
<tr>
<td><span id="pattern"><span style="color: #000000;"><span style="color: #900050;">[ab5@]</span></span></span></td>
<td>匹配 &#8220;a&#8221; 或 &#8220;b&#8221; 或 &#8220;5&#8243; 或 &#8220;@&#8221;</td>
</tr>
<tr>
<td><span id="pattern"><span style="color: #000000;"><span style="color: #900050;">[^abc]</span></span></span></td>
<td>匹配 &#8220;a&#8221;,&#8221;b&#8221;,&#8221;c&#8221; 之外的任意一个字符</td>
</tr>
<tr>
<td><span id="pattern"><span style="color: #000000;"><span style="color: #900050;">[f-k]</span></span></span></td>
<td>匹配 &#8220;f&#8221;~&#8221;k&#8221; 之间的任意一个字母</td>
</tr>
<tr>
<td><span id="pattern"><span style="color: #000000;"><span style="color: #900050;">[^A-F0-3]</span></span></span></td>
<td>匹配 &#8220;A&#8221;~&#8221;F&#8221;,&#8221;0&#8243;~&#8221;3&#8243; 之外的任意一个字符</td>
</tr>
</tbody>
</table>
<p>使用方法是：&#8221;次数修饰&#8221;放在&#8221;被修饰的表达式&#8221;后边。比如：&#8221;[bcd][bcd]&#8221; 可以写成 &#8220;[bcd]{2}&#8221;。</p>
<table border="1" cellspacing="0" cellpadding="3" bgcolor="#f8f8f8">
<tbody>
<tr bgcolor="#f0f0f0">
<td width="67">表达式</td>
<td>作用</td>
</tr>
<tr>
<td><span id="pattern"><span style="color: #000000;"><span style="color: #e07000;">{n}</span></span></span></td>
<td>表达式重复n次，比如：&#8221;\w{2}&#8221; 相当于 &#8220;\w\w&#8221;；&#8221;a{5}&#8221; 相当于 &#8220;aaaaa&#8221;</td>
</tr>
<tr>
<td><span id="pattern"><span style="color: #000000;"><span style="color: #e07000;">{m,n}</span></span></span></td>
<td>表达式至少重复m次，最多重复n次，比如：&#8221;ba{1,3}&#8221;可以匹配 &#8220;ba&#8221;或&#8221;baa&#8221;或&#8221;baaa&#8221;</td>
</tr>
<tr>
<td><span id="pattern"><span style="color: #000000;"><span style="color: #e07000;">{m,}</span></span></span></td>
<td>表达式至少重复m次，比如：&#8221;\w\d{2,}&#8221;可以匹配 &#8220;a12&#8243;,&#8221;_456&#8243;,&#8221;M12344&#8243;&#8230;</td>
</tr>
<tr>
<td><span id="pattern"><span style="color: #000000;"><span style="color: #e07000;">?</span></span></span></td>
<td>匹配表达式0次或者1次，相当于 {0,1}，比如：&#8221;a[cd]?&#8221;可以匹配 &#8220;a&#8221;,&#8221;ac&#8221;,&#8221;ad&#8221;</td>
</tr>
<tr>
<td><span id="pattern"><span style="color: #000000;"><span style="color: #e07000;">+</span></span></span></td>
<td>表达式至少出现1次，相当于 {1,}，比如：&#8221;a+b&#8221;可以匹配 &#8220;ab&#8221;,&#8221;aab&#8221;,&#8221;aaab&#8221;&#8230;</td>
</tr>
<tr>
<td><span id="pattern"><span style="color: #000000;"><span style="color: #e07000;">*</span></span></span></td>
<td>表达式不出现或出现任意次，相当于 {0,}，比如：&#8221;\^*b&#8221;可以匹配 &#8220;b&#8221;,&#8221;^^^b&#8221;&#8230;</td>
</tr>
</tbody>
</table>
<p>一些符号在表达式中代表抽象的特殊意义：</p>
<table border="1" cellspacing="0" cellpadding="3" bgcolor="#f8f8f8">
<tbody>
<tr bgcolor="#f0f0f0">
<td width="67">表达式</td>
<td>作用</td>
</tr>
<tr>
<td><span id="pattern"><span style="color: #000000;"><span style="color: #ff00ff;">^</span></span></span></td>
<td>与字符串开始的地方匹配，不匹配任何字符</td>
</tr>
<tr>
<td><span id="pattern"><span style="color: #000000;"><span style="color: #ff00ff;">$</span></span></span></td>
<td>与字符串结束的地方匹配，不匹配任何字符</td>
</tr>
<tr>
<td><span id="pattern"><span style="color: #000000;"><span style="color: #ff00ff;">\b</span></span></span></td>
<td>匹配一个单词边界，也就是单词和空格之间的位置，不匹配任何字符</td>
</tr>
</tbody>
</table>
<p><span style="color: #ff0000;">以下列举一些常用的正则表达式：</span></p>
<p><span style="color: #000000;">匹配中文字符的正则表达式： [\u4e00-\u9fa5]</span></p>
<p><span style="color: #000000;">评注：匹配中文还真是个头疼的事，有了这个表达式就好办了</span></p>
<p><span style="color: #000000;">匹配双字节字符(包括汉字在内)：[^\x00-\xff]<br />
评注：可以用来计算字符串的长度（一个双字节字符长度计2，ASCII字符计1）</span></p>
<p><span style="color: #000000;">匹配空白行的正则表达式：\n\s*\r<br />
评注：可以用来删除空白行</span></p>
<p><span style="color: #000000;">匹配HTML标记的正则表达式：&lt;(\S*?)[^&gt;]*&gt;.*?&lt;/\1&gt;|&lt;.*? /&gt;<br />
评注：网上流传的版本太糟糕，上面这个也仅仅能匹配部分，对于复杂的嵌套标记依旧无能为力</span></p>
<p><span style="color: #000000;">匹配首尾空白字符的正则表达式：^\s*|\s*$<br />
评注：可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等)，非常有用的表达式</span></p>
<p><span style="color: #000000;">匹配Email地址的正则表达式：\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*<br />
评注：表单验证时很实用</span></p>
<p><span style="color: #000000;">匹配网址URL的正则表达式：[a-zA-z]+://[^\s]*<br />
评注：网上流传的版本功能很有限，上面这个基本可以满足需求</span></p>
<p><span style="color: #000000;">匹配帐号是否合法(字母开头，允许5-16字节，允许字母数字下划线)：^[a-zA-Z][a-zA-Z0-9_]{4,15}$<br />
评注：表单验证时很实用</span></p>
<p><span style="color: #000000;">匹配国内电话号码：\d{3}-\d{8}|\d{4}-\d{7}<br />
评注：匹配形式如 0511-4405222 或 021-87888822</span></p>
<p><span style="color: #000000;">匹配腾讯QQ号：[1-9][0-9]{4,}<br />
评注：腾讯QQ号从10000开始</span></p>
<p><span style="color: #000000;">匹配中国邮政编码：[1-9]\d{5}(?!\d)<br />
评注：中国邮政编码为6位数字</span></p>
<p><span style="color: #000000;">匹配身份证：\d{15}|\d{18}<br />
评注：中国的身份证为15位或18位</span></p>
<p><span style="color: #000000;">匹配ip地址：\d+\.\d+\.\d+\.\d+<br />
评注：提取ip地址时有用</span></p>
<p><span style="color: #000000;">匹配特定数字：<br />
^[1-9]\d*$　 　 //匹配正整数<br />
^-[1-9]\d*$ 　 //匹配负整数<br />
^-?[1-9]\d*$　　 //匹配整数<br />
^[1-9]\d*|0$　 //匹配非负整数（正整数 + 0）<br />
^-[1-9]\d*|0$　　 //匹配非正整数（负整数 + 0）<br />
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$　　 //匹配正浮点数<br />
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$　 //匹配负浮点数<br />
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$　 //匹配浮点数<br />
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$　　 //匹配非负浮点数（正浮点数 + 0）<br />
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$　　//匹配非正浮点数（负浮点数 + 0）<br />
评注：处理大量数据时有用，具体应用时注意修正</span></p>
<p><span style="color: #000000;">匹配特定字符串：<br />
^[A-Za-z]+$　　//匹配由26个英文字母组成的字符串<br />
^[A-Z]+$　　//匹配由26个英文字母的大写组成的字符串<br />
^[a-z]+$　　//匹配由26个英文字母的小写组成的字符串<br />
^[A-Za-z0-9]+$　　//匹配由数字和26个英文字母组成的字符串<br />
^\w+$　　//匹配由数字、26个英文字母或者下划线组成的字符串</span></p>
<p><span style="color: #000000;">匹配上面提到的tppabs=&#8221;*****&#8221;标签的正则表达式为：\btppabs=&#8221;h[^"]*&#8221;，</span></p>
<p>匹配&#8221;javascript:if(confirm<span style="color: #000000;">*****&#8221; 的正则表达式为：</span>href=&#8221;javascript:if\(confirm\(&#8217;htt[^"]*&#8221;</p>
<p>匹配&lt;script&gt;开头、以&lt;/script&gt;结尾的表达式为：&lt;script[^&lt;&gt;]*&gt;[\W\w]*?&lt;/script&gt;</p>
<p><span style="color: #000000;">轻松一松，一替换，几秒钟时间，内容全部替换完成。正是磨刀不误砍柴工啊。</span></p>
<p><span style="color: #ff0000;"><strong>本文结束，知道你会看不懂，看不懂才写给你看，也算我的笔记，过段时间可以回顾。 </strong></span> <img src='http://blog.wxseo.com/wp-includes/images/smilies/icon_razz.gif' alt=':razz:' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wxseo.com/search-using-regular-expressio/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

