<?xml version="1.0" encoding="gb2312"?>

<!-- RSS generated by oioj.net on 4/16/2004 ; 感谢LeXRus提供 RSS 2.0 文档; 此文件可自由使用，但请保留此行信息 --> 
<!-- Source download URL: http://blogger.org.cn/blog/rss2.asp       -->
<rss version="2.0">

<channel>
<title>ewood的博客</title>
<link>http://blogger.org.cn/blog/blog.asp?name=ewood</link>
<description>ewood的博客</description>
<copyright>blogger.org.cn</copyright>
<generator>W3CHINA Blog</generator>
<webMaster>webmaster@blogger.org.cn</webMaster>
<item>
<title><![CDATA[JavaScript中正则表达函数的说明与应用]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=ewood&amp;id=9028</link>
<author>ewood</author>
<pubDate>2005/10/7 20:32:34</pubDate>
<description><![CDATA[<P>作为模式匹配下文本替换、搜索、提取的强有力工具，正则表达式(Regular Expression)的应用已经从unix平台逐渐渗入到网络开发中了，作为服务器端/客户端的脚本开发语言JScript，正越来越多将正则表达式应用融入其中，以弥补自身在文本上处理能力的不足。在此，我们以JScript5.5版本为例，对其中的正则表达式的应用作一个概述。<BR>首先我们需要区分JScript中关于正则表达式的两个对象：Regular Expression对象和RegExp对象。<BR>前者仅包含一个特定的正则表达式实例的信息，而后者通过一个全局变量的属性来反映最近模式匹配的特性。<BR>前者在匹配前需要指定匹配模式，即创建一个Regular Expression对象的实例，而后可以把它传递给一个字符串方法，或是把一个字符串作为参数传递给这个Regular Expression实例的方法；而后者无需创建，它是一个固有的全局对象，每次成功匹配操作结果信息被保存在这个对象的属性中。</P>
<P>一、RegExp对象的属性：反应最近一次成功匹配的结果信息</P>
<P>input&nbsp; :保存执行匹配的字符串(被搜索的目标字符串)(&gt;=IE4)<BR>index&nbsp; :保存匹配的首字符的位置*&gt;=IE4)<BR>lastIndex :保存匹配的字符串的下一个字符的位置(&gt;=IE4)<BR>lastMatch($&amp;) :保存匹配到的字符串（&gt;=IE5.5）<BR>lastParen($+) :保存匹配结果最后一个子匹配的内容（最后一个括号的匹配内容）(&gt;=IE5.5)<BR>leftContext($`) :保存目标字符串中匹配子字符串前的所有字符 (&gt;=IE5.5)<BR>rightContext($'):保存目标字符串中匹配子字符串后的所有字符 (&gt;=IE5.5)<BR>$1 - $9&nbsp; :保存匹配中最开始的9个子匹配（即最开始的9个括号内的匹配结果）(&gt;=IE4)</P>
<P>二、Regular Expression对象简介<BR>1.Regular Expression对象定义<BR>在脚本中使用正则表达式模式匹配，首先腰设定匹配模式，方法有如下两种<BR>(1)rgExp=/pattern*/[flags*]<BR>(2)rgExp=new RegExp("pattern",["flags"])<BR>注意：<BR>a.后者模式中的转义字符“\”需要用“\\”表示，用以抵消JS中转义字符"\"的意义，否则JS首先作为自己的转义概念来解释"\"后的字符。<BR>b.flags标识有以下几个（至JScript 5.5版本）<BR>&nbsp; g：设定当前匹配为全局模式<BR>&nbsp; i：忽略匹配中的大小写检测<BR>&nbsp; m：多行搜索模式<BR>2.Regular Expression对象属性<BR>(1)rgExp.lastIndex:匹配结果后面一个字符的位置，同RegExp.lastIndex<BR>(2)rgExp.source:reExp对象的正则表达式匹配模式<BR>3.Regular Expression对象方法<BR>(1)rgExp.compile(pattern,[flags])<BR>将rgExp转化为内部格式，以加快匹配的执行，这对于大量模式一致的匹配更有效<BR>(2)rgExp.exec(str)<BR>按照rgExp的匹配模式对str字符串进行匹配查找，当rgExp对象中设定了全局搜索模式（g），则匹配查找从RegExp对象lastIndex属性所指定的目标字符串位置开始；若没有设置全局搜索，则从目标字符串第一个字符开始搜索。若没有任何匹配发生，返回null。<BR>需要注意的是该方法将匹配结果放在一个数组内返回，该数组有三个属性<BR>input:包含目标字符串，同RegExp.index<BR>index:匹配到的子字符串在目标字符串中的位置，同RegExp.index<BR>lastIndex:匹配到的子字符串后面一个字符的位置，同RegExp.lastIndex<BR>(3)rgExp.test(str)<BR>返回布尔值来反映被查找的目标字符串str中是否存在符合匹配的模式。该方法不改变RegExp的属性<BR>4.与正则表达式相关的方法<BR>主要是指字符串对象中应用模式匹配的方法<BR>(1)stringObj.match(rgExp)<BR>根据rgExp对象的正则表达式模式查找字符串stringObj中的匹配字符项，将结果以数组形式返回。该数组有三个属性值，与exec方法返回的数组属性相同。若没有任何匹配，返回null。<BR>需要注意的是，若rgExp对象未设定全局匹配模式，则数组0下标元素为匹配的整体内容，1~9包含了子匹配得到的字符。若设定了全局模式，则数组包含了搜索到的所有整体匹配项。<BR>(2)stringObj.replace(rgExp, replaceText)<BR>返回一个字符串，即将stringObj中符合rgExp模式匹配的字符串替换成replaceText后返回。需要注意的是stringObj本身并不因为替换操作而改变。若期望stringObj中所有符合正则表达式模式的字符串被替换，则在建立正则表达式模式时要设定为全局模式。<BR>(3)stringObj.search(rgExp)<BR>返回第一个匹配到的子字符串的位置</P>
<P>符号名词解释：<BR>位置:表示子字符串与目标字符串首字符的偏移<BR>reExp:表示一个Regular Expression对象实例<BR>stringObj:表示一个字符串对象<BR>pattern:正则表达式模式<BR>flags:匹配操作的模式标识</P>
<P>在实际web程序开发中我们可以有针对性的使用正则表达式来达到我们字符串处理的要求<BR>如下附上四个使用正则表达式的JScript例程，这些例子主要用来熟悉正则表达式的使用。</P>
<P>1.email地址有效性检测<BR>&lt;script language='JScript'&gt;<BR>function validateEmail(emailStr)<BR>{<BR>&nbsp;var re=/^[\w.-]+@([0-9a-z][\w-]+\.)+[a-z]{2,3}$/i;<BR>&nbsp;//或 var re=new RegExp("^[\\w.-]+@([0-9a-z][\\w-]+\\.)+[a-z]{2,3}$","i");<BR>&nbsp;if(re.test(emailStr))<BR>&nbsp;{<BR>&nbsp; alert("有效email地址!");<BR>&nbsp; return true;<BR>&nbsp;}<BR>&nbsp;else<BR>&nbsp;{<BR>&nbsp; alert("无效email地址!");<BR>&nbsp; return false;<BR>&nbsp;}<BR>}<BR>&lt;/script&gt;</P>
<P>2.字符串替换操作<BR>&lt;script language='JScript'&gt;<BR>var r, pattern, re;<BR>var s = "The rain in Spain falls mainly in the plain falls.";<BR>pattern = /falls/ig;<BR>re = s.replace(pattern,'falling');<BR>alert('s = ' + s + '\n' + 're = ' + re);<BR>&lt;/script&gt;</P>
<P>3.模式查找字符串<BR>&lt;script language='JScript'&gt;<BR>var index, pattern;<BR>var str = "four for fall fell fallen fallsing fall falls waterfalls ";<BR>pattern = /\bfalls\b/i;<BR>index = str.search(pattern);<BR>alert('The position of match is at ' + index);<BR>&lt;/script&gt;</P>
<P>3.正则表达式属性例程<BR>&lt;script language='JScript'&gt;<BR>function matchAttrib()<BR>{<BR>&nbsp;&nbsp; var s=''; <BR>&nbsp;&nbsp; var re = new RegExp("d(b+)(d)","ig");<BR>&nbsp;&nbsp; var str = "cdbBbdbsbdbdz";<BR>&nbsp;&nbsp; while((arr = re.exec(str))!=null)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; s += "=======================================&lt;br&gt;";<BR>&nbsp;&nbsp;&nbsp; s += "$1 returns: " + RegExp.$1 + "&lt;br&gt;";<BR>&nbsp;&nbsp;&nbsp; s += "$2 returns: " + RegExp.$2 + "&lt;br&gt;";<BR>&nbsp;&nbsp;&nbsp; s += "$3 returns: " + RegExp.$3 + "&lt;br&gt;";<BR>&nbsp;&nbsp;&nbsp; s += "input returns : " + RegExp.input + "&lt;br&gt;";<BR>&nbsp;&nbsp;&nbsp; s += "index returns : " + RegExp.index + "&lt;br&gt;";<BR>&nbsp;&nbsp;&nbsp; s += "lastIndex returns : " + RegExp.lastIndex + "&lt;br&gt;";<BR>&nbsp;&nbsp;&nbsp; s += "lastMatch returns: " + RegExp.lastMatch + "&lt;br&gt;";<BR>&nbsp;&nbsp;&nbsp; s += "leftContext returns: " + RegExp.leftContext + "&lt;br&gt;";<BR>&nbsp;&nbsp;&nbsp; s += "rightContext returns: " + RegExp.rightContext + "&lt;br&gt;"; <BR>&nbsp;&nbsp;&nbsp; s += "lastParen returns: " + RegExp.lastParen + "&lt;br&gt;";<BR>&nbsp;&nbsp;&nbsp; s += "arr.index returns: " + arr.index + "&lt;br&gt;";<BR>&nbsp;&nbsp;&nbsp; s += "arr.lastIndex returns: " + arr.lastIndex + "&lt;br&gt;";<BR>&nbsp;&nbsp;&nbsp; s += "arr.input returns: " + arr.input + "&lt;br&gt;";<BR>&nbsp;&nbsp;&nbsp; s += "re.lastIndex returns: " + re.lastIndex + "&lt;br&gt;";<BR>&nbsp;&nbsp;&nbsp; s += "re.source returns: " + re.source + "&lt;br&gt;";<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; return(s);&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;&nbsp; //Return results.<BR>}<BR>document.write(matchAttrib());<BR>&lt;/script&gt;</P>]]></description>
</item><item>
<title><![CDATA[正则表达式(regular expression)]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=ewood&amp;id=9026</link>
<author>ewood</author>
<pubDate>2005/10/7 20:28:43</pubDate>
<description><![CDATA[
<H2><A name=1._引子>1. 引子</A></H2>
<P>　　目前，正则表达式已经在很多软件中得到广泛的应用，包括*nix（Linux, Unix等），HP等操作系统，PHP，C#，Java等开发环境，以及很多的应用软件中，都可以看到正则表达式的影子。</P>
<P>　　正则表达式的使用，可以通过简单的办法来实现强大的功能。为了简单有效而又不失强大，造成了正则表达式代码的难度较大，学习起来也不是很容易，所以需要付出一些努力才行，入门之后参照一定的参考，使用起来还是比较简单有效的。</P>
<BLOCKQUOTE>
<P>例子：<SPAN style="BACKGROUND-COLOR: #00ffff"> ^.+@.+\\..+$ </SPAN></P></BLOCKQUOTE>
<P>　　这样的代码曾经多次把我自己给吓退过。可能很多人也是被这样的代码给吓跑的吧。继续阅读本文将让你也可以自由应用这样的代码。</P>
<P>　　注意：这里的第7部分跟前面的内容看起来似乎有些重复，目的是把前面表格里的部分重新描述了一次，目的是让这些内容更容易理解。</P>
<H2><B><A name=2._正则表达式的历史>2. 正则表达式的历史</A></B></H2>
<DIV id=nstext valign="bottom">　　正则表达式的“祖先”可以一直上溯至对人类神经系统如何工作的早期研究。Warren McCulloch 和 Walter Pitts 这两位神经生理学家研究出一种数学方式来描述这些神经网络。 
<P>　　1956 年, 一位叫 Stephen Kleene 的数学家在 McCulloch 和 Pitts 早期工作的基础上，发表了一篇标题为“神经网事件的表示法”的论文，引入了正则表达式的概念。正则表达式就是用来描述他称为“正则集的代数”的表达式，因此采用“正则表达式”这个术语。</P>
<P>　　随后，发现可以将这一工作应用于使用 Ken Thompson 的计算搜索算法的一些早期研究，Ken Thompson 是 Unix 的主要发明人。正则表达式的第一个实用应用程序就是 Unix 中的 <I>qed </I>编辑器。</P>
<P>　　如他们所说，剩下的就是众所周知的历史了。从那时起直至现在正则表达式都是基于文本的编辑器和搜索工具中的一个重要部分。</P></DIV>
<P>　</P>
<H2><B><A name=3._正则表达式定义>3. 正则表达式定义</A></B></H2>
<P>　　正则表达式(regular expression)描述了一种字符串匹配的模式，可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。</P>
<BLOCKQUOTE>
<UL>
<LI><SPAN style="BACKGROUND-COLOR: #ffff00">列目录时，　dir *.txt或ls *.txt中的*.txt就</SPAN><FONT color=#ff0000><SPAN style="BACKGROUND-COLOR: #ffff00">不</SPAN></FONT><SPAN style="BACKGROUND-COLOR: #ffff00">是一个正则表达式,因为这里*与正则式的*的含义是不同的。</SPAN> </LI></UL></BLOCKQUOTE>
<P>　　正则表达式是由普通字符（例如字符 a 到 z）以及特殊字符（称为元字符）组成的文字模式。正则表达式作为一个模板，将某个字符模式与所搜索的字符串进行匹配。</P>
<H3><B><A name=3.1_普通字符>3.1 普通字符</A></B></H3>
<P>　　由所有那些未显式指定为元字符的打印和非打印字符组成。这包括所有的大写和小写字母字符，所有数字，所有标点符号以及一些符号。 </P>
<H3><A name=3.2_非打印字符>3.2 非打印字符</A></H3>
<P>
<TABLE cellSpacing=1 cellPadding=3 border=0>
<TBODY>
<TR>
<TH style="FONT-SIZE: 12px" align=left>字符 </TH>
<TH style="FONT-SIZE: 12px" align=left>含义</TH></TR>
<TR>
<TD style="FONT-SIZE: 12px">\cx </TD>
<TD style="FONT-SIZE: 12px">匹配由x指明的控制字符。例如， \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则，将 c 视为一个原义的 'c' 字符。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">\f </TD>
<TD style="FONT-SIZE: 12px">匹配一个换页符。等价于 \x0c 和 \cL。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">\n </TD>
<TD style="FONT-SIZE: 12px">匹配一个换行符。等价于 \x0a 和 \cJ。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">\r </TD>
<TD style="FONT-SIZE: 12px">匹配一个回车符。等价于 \x0d 和 \cM。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">\s </TD>
<TD style="FONT-SIZE: 12px">匹配任何空白字符，包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">\S </TD>
<TD style="FONT-SIZE: 12px">匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">\t </TD>
<TD style="FONT-SIZE: 12px">匹配一个制表符。等价于 \x09 和 \cI。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">\v </TD>
<TD style="FONT-SIZE: 12px">匹配一个垂直制表符。等价于 \x0b 和 \cK。</TD></TR></TBODY></TABLE><BR>　 </P>
<H3><A name=3.3_特殊字符>3.3 特殊字符</A></H3>
<P>　　所谓特殊字符，就是一些有特殊含义的字符，如上面说的"*.txt"中的*，简单的说就是表示任何字符串的意思。如果要查找文件名中有＊的文件，则需要对＊进行转义，即在其前加一个\。ls \*.txt。正则表达式有以下特殊字符。 </P>
<P>　</P>
<P>
<TABLE cellSpacing=1 cellPadding=3 border=0>
<TBODY>
<TR>
<TH style="FONT-SIZE: 12px" align=left>特别字符</TH>
<TH style="FONT-SIZE: 12px" align=left>说明</TH></TR>
<TR>
<TD style="FONT-SIZE: 12px">$</TD>
<TD style="FONT-SIZE: 12px">匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性，则 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身，请使用 \$。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">( )</TD>
<TD style="FONT-SIZE: 12px">标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符，请使用 \( 和 \)。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">*</TD>
<TD style="FONT-SIZE: 12px">匹配前面的子表达式零次或多次。要匹配 * 字符，请使用 \*。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">+</TD>
<TD style="FONT-SIZE: 12px">匹配前面的子表达式一次或多次。要匹配 + 字符，请使用 \+。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">.</TD>
<TD style="FONT-SIZE: 12px">匹配除换行符 \n之外的任何单字符。要匹配 .，请使用 \。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">[ </TD>
<TD style="FONT-SIZE: 12px">标记一个中括号表达式的开始。要匹配 [，请使用 \[。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">?</TD>
<TD style="FONT-SIZE: 12px">匹配前面的子表达式零次或一次，或指明一个非贪婪限定符。要匹配 ? 字符，请使用 \?。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">\</TD>
<TD style="FONT-SIZE: 12px">将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如， 'n' 匹配字符 'n'。'\n' 匹配换行符。序列 '\\' 匹配 "\"，而 '\(' 则匹配 "("。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">^</TD>
<TD style="FONT-SIZE: 12px">匹配输入字符串的开始位置，除非在方括号表达式中使用，此时它表示不接受该字符集合。要匹配 ^ 字符本身，请使用 \^。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">{</TD>
<TD style="FONT-SIZE: 12px">标记限定符表达式的开始。要匹配 {，请使用 \{。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">|</TD>
<TD style="FONT-SIZE: 12px">指明两项之间的一个选择。要匹配 |，请使用 \|。</TD></TR></TBODY></TABLE></P>
<BLOCKQUOTE>
<UL>
<LI><STRONG style="FONT-WEIGHT: 400; BACKGROUND-COLOR: #ffff00">　　构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与操作符将小的表达式结合在一起来创建更大的表达式。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。</STRONG> </LI></UL></BLOCKQUOTE>
<P>　</P>
<H3><A name=3.4_限定符>3.4 限定符</A></H3>
<P>　　限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有*或+或?或{n}或{n,}或{n,m}共6种。<BR>*、+和?限定符都是贪婪的，因为它们会尽可能多的匹配文字，只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。<BR>　　正则表达式的限定符有：<BR>　 
<TABLE cellSpacing=1 cellPadding=3 border=0>
<TBODY>
<TR>
<TH style="FONT-SIZE: 12px" align=left>字符 </TH>
<TH style="FONT-SIZE: 12px" align=left>描述</TH></TR>
<TR>
<TD style="FONT-SIZE: 12px">* </TD>
<TD style="FONT-SIZE: 12px">匹配前面的子表达式零次或多次。例如，zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">+ </TD>
<TD style="FONT-SIZE: 12px">匹配前面的子表达式一次或多次。例如，'zo+' 能匹配 "zo" 以及 "zoo"，但不能匹配 "z"。+ 等价于 {1,}。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">? </TD>
<TD style="FONT-SIZE: 12px">匹配前面的子表达式零次或一次。例如，"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">{n} </TD>
<TD style="FONT-SIZE: 12px">n 是一个非负整数。匹配确定的 n 次。例如，'o{2}' 不能匹配 "Bob" 中的 'o'，但是能匹配 "food" 中的两个 o。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">{n,} </TD>
<TD style="FONT-SIZE: 12px">n 是一个非负整数。至少匹配n 次。例如，'o{2,}' 不能匹配 "Bob" 中的 'o'，但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">{n,m} </TD>
<TD style="FONT-SIZE: 12px">m 和 n 均为非负整数，其中n &lt;= m。最少匹配 n 次且最多匹配 m 次。例如，"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。</TD></TR></TBODY></TABLE></P>
<H3><A name=3.5_定位符>3.5 定位符</A></H3>
<P>　　用来描述字符串或单词的边界，^和$分别指字符串的开始与结束，\b描述单词的前或后边界，\B表示非单词边界。<FONT color=#ff0000>不能对定位符使用限定符。</FONT> </P>
<H3><A name=3.6_选择>3.6 选择</A></H3>
<P>　　用圆括号将所有选择项括起来，相邻的选择项之间用|分隔。但用圆括号会有一个副作用，是相关的匹配会被缓存，此时可用?:放在第一个选项前来消除这种副作用。<BR>　　其中?:是非捕获元之一，还有两个非捕获元是?=和?!，这两个还有更多的含义，前者为正向预查，在任何开始匹配圆括号内的正则表达式模式的位置来匹配搜索字符串，后者为负向预查，在任何开始不匹配该正则表达式模式的位置来匹配搜索字符串。 </P>
<H3><A name=3.7_后向引用>3.7 后向引用</A></H3>
<P>　　对一个正则表达式模式或部分模式两边添加圆括号将导致相关匹配存储到一个临时缓冲区中，所捕获的每个子匹配都按照在正则表达式模式中从左至右所遇到的内容存储。存储子匹配的缓冲区编号从 1 开始，连续编号直至最大 99 个子表达式。每个缓冲区都可以使用 '\n' 访问，其中 n 为一个标识特定缓冲区的一位或两位十进制数。<BR>　　可以使用非捕获元字符 '?:', '?=', or '?!' 来忽略对相关匹配的保存。 </P>
<H2><A name=4._各种操作符的运算优先级>4. 各种操作符的运算优先级</A></H2>
<P>　　相同优先级的从左到右进行运算，不同优先级的运算先高后低。各种操作符的优先级从高到低如下：<BR>　 
<TABLE cellSpacing=1 cellPadding=3 border=0>
<TBODY>
<TR>
<TH style="FONT-SIZE: 12px" align=left>操作符 </TH>
<TH style="FONT-SIZE: 12px" align=left>描述</TH></TR>
<TR>
<TD style="FONT-SIZE: 12px">\ </TD>
<TD style="FONT-SIZE: 12px">转义符</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">(), (?:), (?=), [] </TD>
<TD style="FONT-SIZE: 12px">圆括号和方括号</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">*, +, ?, {n}, {n,}, {n,m} </TD>
<TD style="FONT-SIZE: 12px">限定符</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">^, $, \anymetacharacter </TD>
<TD style="FONT-SIZE: 12px">位置和顺序</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">| </TD>
<TD style="FONT-SIZE: 12px">“或”操作</TD></TR></TBODY></TABLE></P>
<H2><A name=5._全部符号解释>5. 全部符号解释</A></H2>
<P>
<TABLE cellSpacing=1 cellPadding=3 border=0>
<TBODY>
<TR>
<TH style="FONT-SIZE: 12px" align=left>字符 </TH>
<TH style="FONT-SIZE: 12px" align=left>描述</TH></TR>
<TR>
<TD style="FONT-SIZE: 12px">\ </TD>
<TD style="FONT-SIZE: 12px">将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如，'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">^ </TD>
<TD style="FONT-SIZE: 12px">匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性，^ 也匹配 '\n' 或 '\r' 之后的位置。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">$ </TD>
<TD style="FONT-SIZE: 12px">匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性，$ 也匹配 '\n' 或 '\r' 之前的位置。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">* </TD>
<TD style="FONT-SIZE: 12px">匹配前面的子表达式零次或多次。例如，zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">+ </TD>
<TD style="FONT-SIZE: 12px">匹配前面的子表达式一次或多次。例如，'zo+' 能匹配 "zo" 以及 "zoo"，但不能匹配 "z"。+ 等价于 {1,}。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">? </TD>
<TD style="FONT-SIZE: 12px">匹配前面的子表达式零次或一次。例如，"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">{n} </TD>
<TD style="FONT-SIZE: 12px">n 是一个非负整数。匹配确定的 n 次。例如，'o{2}' 不能匹配 "Bob" 中的 'o'，但是能匹配 "food" 中的两个 o。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">{n,} </TD>
<TD style="FONT-SIZE: 12px">n 是一个非负整数。至少匹配n 次。例如，'o{2,}' 不能匹配 "Bob" 中的 'o'，但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">{n,m} </TD>
<TD style="FONT-SIZE: 12px">m 和 n 均为非负整数，其中n &lt;= m。最少匹配 n 次且最多匹配 m 次。例如，"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">? </TD>
<TD style="FONT-SIZE: 12px">当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时，匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串，而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如，对于字符串 "oooo"，'o+?' 将匹配单个 "o"，而 'o+' 将匹配所有 'o'。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">. </TD>
<TD style="FONT-SIZE: 12px">匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符，请使用象 '[.\n]' 的模式。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">(pattern) </TD>
<TD style="FONT-SIZE: 12px">匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到，在VBScript 中使用 SubMatches 集合，在JScript 中则使用 $0…$9 属性。要匹配圆括号字符，请使用 '\(' 或 '\)'。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">(?:pattern) </TD>
<TD style="FONT-SIZE: 12px">匹配 pattern 但不获取匹配结果，也就是说这是一个非获取匹配，不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如， 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">(?=pattern) </TD>
<TD style="FONT-SIZE: 12px">正向预查，在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。例如，'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ，但不能匹配 "Windows 3.1" 中的 "Windows"。预查不消耗字符，也就是说，在一个匹配发生后，在最后一次匹配之后立即开始下一次匹配的搜索，而不是从包含预查的字符之后开始。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">(?!pattern) </TD>
<TD style="FONT-SIZE: 12px">负向预查，在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows"，但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符，也就是说，在一个匹配发生后，在最后一次匹配之后立即开始下一次匹配的搜索，而不是从包含预查的字符之后开始</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">x|y </TD>
<TD style="FONT-SIZE: 12px">匹配 x 或 y。例如，'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">[xyz] </TD>
<TD style="FONT-SIZE: 12px">字符集合。匹配所包含的任意一个字符。例如， '[abc]' 可以匹配 "plain" 中的 'a'。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">[^xyz] </TD>
<TD style="FONT-SIZE: 12px">负值字符集合。匹配未包含的任意字符。例如， '[^abc]' 可以匹配 "plain" 中的'p'。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">[a-z] </TD>
<TD style="FONT-SIZE: 12px">字符范围。匹配指定范围内的任意字符。例如，'[a-z]' 可以匹配 'a' 到 'z' 范围内的任意小写字母字符。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">[^a-z] </TD>
<TD style="FONT-SIZE: 12px">负值字符范围。匹配任何不在指定范围内的任意字符。例如，'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范围内的任意字符。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">\b </TD>
<TD style="FONT-SIZE: 12px">匹配一个单词边界，也就是指单词和空格间的位置。例如， 'er\b' 可以匹配"never" 中的 'er'，但不能匹配 "verb" 中的 'er'。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">\B </TD>
<TD style="FONT-SIZE: 12px">匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er'，但不能匹配 "never" 中的 'er'。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">\cx </TD>
<TD style="FONT-SIZE: 12px">匹配由 x 指明的控制字符。例如， \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则，将 c 视为一个原义的 'c' 字符。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">\d </TD>
<TD style="FONT-SIZE: 12px">匹配一个数字字符。等价于 [0-9]。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">\D </TD>
<TD style="FONT-SIZE: 12px">匹配一个非数字字符。等价于 [^0-9]。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">\f </TD>
<TD style="FONT-SIZE: 12px">匹配一个换页符。等价于 \x0c 和 \cL。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">\n </TD>
<TD style="FONT-SIZE: 12px">匹配一个换行符。等价于 \x0a 和 \cJ。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">\r </TD>
<TD style="FONT-SIZE: 12px">匹配一个回车符。等价于 \x0d 和 \cM。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">\s </TD>
<TD style="FONT-SIZE: 12px">匹配任何空白字符，包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">\S </TD>
<TD style="FONT-SIZE: 12px">匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">\t </TD>
<TD style="FONT-SIZE: 12px">匹配一个制表符。等价于 \x09 和 \cI。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">\v </TD>
<TD style="FONT-SIZE: 12px">匹配一个垂直制表符。等价于 \x0b 和 \cK。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">\w </TD>
<TD style="FONT-SIZE: 12px">匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">\W </TD>
<TD style="FONT-SIZE: 12px">匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">\xn </TD>
<TD style="FONT-SIZE: 12px">匹配 n，其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如，'\x41' 匹配 "A"。'\x041' 则等价于 '\x04' &amp; "1"。正则表达式中可以使用 ASCII 编码。.</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">\num </TD>
<TD style="FONT-SIZE: 12px">匹配 num，其中 num 是一个正整数。对所获取的匹配的引用。例如，'(.)\1' 匹配两个连续的相同字符。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">\n </TD>
<TD style="FONT-SIZE: 12px">标识一个八进制转义值或一个向后引用。如果 \n 之前至少 n 个获取的子表达式，则 n 为向后引用。否则，如果 n 为八进制数字 (0-7)，则 n 为一个八进制转义值。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">\nm </TD>
<TD style="FONT-SIZE: 12px">标识一个八进制转义值或一个向后引用。如果 \nm 之前至少有 nm 个获得子表达式，则 nm 为向后引用。如果 \nm 之前至少有 n 个获取，则 n 为一个后跟文字 m 的向后引用。如果前面的条件都不满足，若 n 和 m 均为八进制数字 (0-7)，则 \nm 将匹配八进制转义值 nm。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">\nml </TD>
<TD style="FONT-SIZE: 12px">如果 n 为八进制数字 (0-3)，且 m 和 l 均为八进制数字 (0-7)，则匹配八进制转义值 nml。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">\un </TD>
<TD style="FONT-SIZE: 12px">匹配 n，其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如， \u00A9 匹配版权符号 (?)。</TD></TR></TBODY></TABLE></P>
<P>　</P>
<H2><A name=6._部分例子>6. 部分例子</A></H2>
<P>
<TABLE cellSpacing=1 cellPadding=3 border=0>
<TBODY>
<TR>
<TH style="FONT-SIZE: 12px" align=left>正则表达式</TH>
<TH style="FONT-SIZE: 12px" align=left>说明</TH></TR>
<TR>
<TD style="FONT-SIZE: 12px">/\b([a-z]+) \1\b/gi</TD>
<TD style="FONT-SIZE: 12px">一个单词连续出现的位置</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/ </TD>
<TD style="FONT-SIZE: 12px">将一个URL解析为协议、域、端口及相对路径</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">/^(?:Chapter|Section) [1-9][0-9]{0,1}$/</TD>
<TD style="FONT-SIZE: 12px">定位章节的位置</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">/[-a-z]/</TD>
<TD style="FONT-SIZE: 12px">A至z共26个字母再加一个-号。</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">/ter\b/</TD>
<TD style="FONT-SIZE: 12px">可匹配chapter，而不能terminal</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">/\Bapt/</TD>
<TD style="FONT-SIZE: 12px">可匹配chapter，而不能aptitude</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px">/Windows(?=95 |98 |NT )/</TD>
<TD style="FONT-SIZE: 12px">可匹配Windows95或Windows98或WindowsNT,当找到一个匹配后，从Windows后面开始进行下一次的检索匹配。</TD></TR></TBODY></TABLE></P>
<P>　</P>
<H2><A name=7._正则表达式匹配规则>7. 正则表达式匹配规则</A></H2>
<P><B><A name=7.1_基本模式匹配>7.1 基本模式匹配</A></B><BR><BR>　　一切从最基本的开始。模式，是正规表达式最基本的元素，它们是一组描述字符串特征的字符。模式可以很简单，由普通的字符串组成，也可以非常复杂，往往用特殊的字符表示一个范围内的字符、重复出现，或表示上下文。例如：</P>
<BLOCKQUOTE>
<P>^once </P></BLOCKQUOTE>
<P>　　这个模式包含一个特殊的字符^，表示该模式只匹配那些以once开头的字符串。例如该模式与字符串"once upon a time"匹配，与"There once was a man from NewYork"不匹配。正如如^符号表示开头一样，$符号用来匹配那些以给定模式结尾的字符串。</P>
<BLOCKQUOTE>
<P>bucket$ </P></BLOCKQUOTE>
<P>　　这个模式与"Who kept all of this cash in a bucket"匹配，与"buckets"不匹配。字符^和$同时使用时，表示精确匹配（字符串与模式一样）。例如：</P>
<BLOCKQUOTE>
<P>^bucket$ </P></BLOCKQUOTE>
<P>　　只匹配字符串"bucket"。如果一个模式不包括^和$，那么它与任何包含该模式的字符串匹配。例如：模式</P>
<BLOCKQUOTE>
<P>once </P></BLOCKQUOTE>
<P>与字符串</P>
<BLOCKQUOTE>
<P>There once was a man from NewYork<BR>Who kept all of his cash in a bucket.</P></BLOCKQUOTE>
<P>是匹配的。<BR><BR>　　在该模式中的字母(o-n-c-e)是字面的字符，也就是说，他们表示该字母本身，数字也是一样的。其他一些稍微复杂的字符，如标点符号和白字符（空格、制表符等），要用到转义序列。所有的转义序列都用反斜杠(\)打头。制表符的转义序列是：\t。所以如果我们要检测一个字符串是否以制表符开头，可以用这个模式：</P>
<BLOCKQUOTE>
<P>^\t </P></BLOCKQUOTE>
<P>类似的，用\n表示“新行”，\r表示回车。其他的特殊符号，可以用在前面加上反斜杠，如反斜杠本身用\\表示，句号.用\.表示，以此类推。<BR><BR><B><A name=7.2_字符簇>7.2 字符簇</A></B><BR><BR>在INTERNET的程序中，正规表达式通常用来验证用户的输入。当用户提交一个FORM以后，要判断输入的电话号码、地址、EMAIL地址、信用卡号码等是否有效，用普通的基于字面的字符是不够的。<BR><BR>所以要用一种更自由的描述我们要的模式的办法，它就是字符簇。要建立一个表示所有元音字符的字符簇，就把所有的元音字符放在一个方括号里：</P>
<BLOCKQUOTE>
<P>[AaEeIiOoUu] </P></BLOCKQUOTE>
<P>这个模式与任何元音字符匹配，但只能表示一个字符。用连字号可以表示一个字符的范围，如：</P>
<BLOCKQUOTE>
<P>[a-z] //匹配所有的小写字母 <BR>[A-Z] //匹配所有的大写字母 <BR>[a-zA-Z] //匹配所有的字母 <BR>[0-9] //匹配所有的数字 <BR>[0-9\.\-] //匹配所有的数字，句号和减号 <BR>[ \f\r\t\n] //匹配所有的白字符 </P></BLOCKQUOTE>
<P>同样的，这些也只表示一个字符，这是一个非常重要的。如果要匹配一个由一个小写字母和一位数字组成的字符串，比如"z2"、"t6"或"g7"，但不是"ab2"、"r2d3" 或"b52"的话，用这个模式：</P>
<BLOCKQUOTE>
<P>^[a-z][0-9]$ </P></BLOCKQUOTE>
<P>尽管[a-z]代表26个字母的范围，但在这里它只能与第一个字符是小写字母的字符串匹配。<BR><BR>前面曾经提到^表示字符串的开头，但它还有另外一个含义。当在一组方括号里使用^是，它表示“非”或“排除”的意思，常常用来剔除某个字符。还用前面的例子，我们要求第一个字符不能是数字：</P>
<BLOCKQUOTE>
<P>^[^0-9][0-9]$ </P></BLOCKQUOTE>
<P>这个模式与"&amp;5"、"g7"及"-2"是匹配的，但与"12"、"66"是不匹配的。下面是几个排除特定字符的例子：</P>
<BLOCKQUOTE>
<P>[^a-z] //除了小写字母以外的所有字符 <BR>[^\\\/\^] //除了(\)(/)(^)之外的所有字符 <BR>[^\"\'] //除了双引号(")和单引号(')之外的所有字符 </P></BLOCKQUOTE>
<P>特殊字符"." (点，句号)在正规表达式中用来表示除了“新行”之外的所有字符。所以模式"^.5$"与任何两个字符的、以数字5结尾和以其他非“新行”字符开头的字符串匹配。模式"."可以匹配任何字符串，除了空串和只包括一个“新行”的字符串。<BR><BR>PHP的正规表达式有一些内置的通用字符簇，列表如下：</P>
<BLOCKQUOTE>
<P>字符簇 含义 <BR>[[:alpha:]] 任何字母 <BR>[[:digit:]] 任何数字 <BR>[[:alnum:]] 任何字母和数字 <BR>[[:space:]] 任何白字符 <BR>[[:upper:]] 任何大写字母 <BR>[[:lower:]] 任何小写字母 <BR>[[:punct:]] 任何标点符号 <BR>[[:xdigit:]] 任何16进制的数字，相当于[0-9a-fA-F] </P></BLOCKQUOTE>
<P><B><A name=7.3_确定重复出现>7.3 确定重复出现</A></B><BR><BR>到现在为止，你已经知道如何去匹配一个字母或数字，但更多的情况下，可能要匹配一个单词或一组数字。一个单词有若干个字母组成，一组数字有若干个单数组成。跟在字符或字符簇后面的花括号({})用来确定前面的内容的重复出现的次数。 </P>
<BLOCKQUOTE>
<P>字符簇 含义 <BR>^[a-zA-Z_]$ 所有的字母和下划线 <BR>^[[:alpha:]]{3}$ 所有的3个字母的单词 <BR>^a$ 字母a <BR>^a{4}$ aaaa <BR>^a{2,4}$ aa,aaa或aaaa <BR>^a{1,3}$ a,aa或aaa <BR>^a{2,}$ 包含多于两个a的字符串 <BR>^a{2,} 如：aardvark和aaab，但apple不行 <BR>a{2,} 如：baad和aaa，但Nantucket不行 <BR>\t{2} 两个制表符 <BR>.{2} 所有的两个字符 </P></BLOCKQUOTE>
<P>这些例子描述了花括号的三种不同的用法。一个数字，{x}的意思是“前面的字符或字符簇只出现x次”；一个数字加逗号，{x,}的意思是“前面的内容出现x或更多的次数”；两个用逗号分隔的数字，{x,y}表示“前面的内容至少出现x次，但不超过y次”。我们可以把模式扩展到更多的单词或数字：</P>
<BLOCKQUOTE>
<P>^[a-zA-Z0-9_]{1,}$ //所有包含一个以上的字母、数字或下划线的字符串 <BR>^[0-9]{1,}$ //所有的正数 <BR>^\-{0,1}[0-9]{1,}$ //所有的整数 <BR>^\-{0,1}[0-9]{0,}\.{0,1}[0-9]{0,}$ //所有的小数 </P></BLOCKQUOTE>
<P>最后一个例子不太好理解，是吗？这么看吧：与所有以一个可选的负号(\-{0,1})开头(^)、跟着0个或更多的数字([0-9]{0,})、和一个可选的小数点(\.{0,1})再跟上0个或多个数字([0-9]{0,})，并且没有其他任何东西($)。下面你将知道能够使用的更为简单的方法。<BR><BR>特殊字符"?"与{0,1}是相等的，它们都代表着：“0个或1个前面的内容”或“前面的内容是可选的”。所以刚才的例子可以简化为：</P>
<BLOCKQUOTE>
<P>^\-?[0-9]{0,}\.?[0-9]{0,}$ </P></BLOCKQUOTE>
<P>特殊字符"*"与{0,}是相等的，它们都代表着“0个或多个前面的内容”。最后，字符"+"与 {1,}是相等的，表示“1个或多个前面的内容”，所以上面的4个例子可以写成：</P>
<BLOCKQUOTE>
<P>^[a-zA-Z0-9_]+$ //所有包含一个以上的字母、数字或下划线的字符串 <BR>^[0-9]+$ //所有的正数 <BR>^\-?[0-9]+$ //所有的整数 <BR>^\-?[0-9]*\.?[0-9]*$ //所有的小数 </P></BLOCKQUOTE>
<P>当然这并不能从技术上降低正规表达式的复杂性，但可以使它们更容易阅读。</P>
<P>　</P>
<P>参考文献：<BR><A href="http://www.soulogic.com/code/doc/RegularExpressions/">JScript&nbsp;和&nbsp;VBScript&nbsp;正则表达式</A></P>]]></description>
</item><item>
<title><![CDATA[选自脱口而出系列 100个短句]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=ewood&amp;id=8611</link>
<author>ewood</author>
<pubDate>2005/9/14 18:49:28</pubDate>
<description><![CDATA[
<TABLE style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" width="98%" align=center border=0>
<TBODY>
<TR>
<TD vAlign=center align=top><B>一百个句型可以演绎成千上万个句子！</B><B> 
<P></P></B>
<P></P>
<P>【疯狂短评】</P><BR>我们为大家精选了日常生活中使用频率最高的100个句型，通过句型帮助大家迅速扩大句子量，在短期内提高大家的口语会话能力。现在就开始，疯狂投入、疯狂背诵、疯狂积累、疯狂进步！ 
<P></P>
<P></P>
<P>【Kim’s Note】 Sentence patterns are an easy way to upgrade your English. If you learn one hundred sentence patterns, you can easily multiply your knowledge!</P>
<P>【李阳老师的话】</P><BR>你知道一个句型的威力吗？一个句型等于10个句子，100个句子，甚至1000个句子！脱口而出一个句型，那可是一个了不起的成就！值得你为之庆祝！ 
<P></P><BR>拿出百分之百的干劲，吃掉这一百个句型吧！ 
<P></P><BR>全国已有数万人能将《脱口而出》第一辑上的一百个句型连续脱口而出!的确吓人! 
<P></P>
<P>【特别注意】</P><BR>为了让大家更疯狂的操练，前十个句型的句子注了美国KK音标。 
<P></P><BR>千万别偷懒，不懂的单词一定要查字典，注上音标，直至脱口而出！ 
<P></P>
<P><B>1. Allow me to… </B><B>请允许我…… 
<P></P></B>
<P></P>
<P>Allow me to introduce our manager, Stone Lee.</P>
<P>[[5aJ mi tu 7Intr[5djus aJr 5mAnIdVL ston li ]</P>
<P>（请允许我介绍一下我们的经理，李石头先生。） 
<P></P>
<P></P>
<P>
<P></P>
<P></P>
<P><B>2. Any idea… </B><B>你知道……吗？</B></P>
<P>Any idea what time it is ?</P>
<P>[5ZnI aI\'dI[ hwBt taIm It Iz ]</P>
<P>（你知道现在几点了？）</P>
<P>【Kim’s Note】 This is a more advanced way to ask a question, try it!&nbsp;&nbsp;</P>
<P>
<P></P>
<P></P>
<P><B>3. Are you fond of… </B><B>你喜欢……吗？ 
<P></P></B>
<P></P>
<P>Are you fond of children? 
<P></P>
<P></P>
<P>[Br ju fBnd [v 5tFIldrEn]</P>
<P>（你喜欢孩子吗？）</P>
<P>Are you fond of Chinese food?</P>
<P>[Br ju fBnd [v tFaI5niz fud ]</P>
<P>（你喜欢吃中国菜吗？）</P>
<P>
<P></P>
<P></P>
<P><B>4. as if… </B><B>好象…… 
<P></P></B>
<P></P>
<P>When I told them my plan, they looked at me as if I was crazy.</P>
<P>[hwZn aI told TZm maI plAn Te lJkt At mi Az If aI wCz 5krezI]&nbsp;&nbsp;</P>
<P>（当我告诉他们我的计划之后，他们把我当疯子一样的看着我。）</P>
<P>Don’t talk to me as if I am stupid!</P>
<P>[dont tCk tu mi Az If aI Am 5stjupId ]</P>
<P>（不要把我当笨蛋一样和我说话。）</P>
<P>
<P></P>
<P></P>
<P><B>5. as long as… </B><B>只要…… 
<P></P></B>
<P></P>
<P>You can drive my car as long as you drive carefully.</P>
<P>[ju kAn draIv maI kBr Az lRN Az ju draIv 5kZrfElI]</P>
<P>（只要你保证小心驾驶，我就让你开我的车。）</P>
<P>【疯狂实战】</P>
<P>A: As long as we’re out we should stop and visit my mother.</P>
<P>（只要我们出门，我们就应该去看望我母亲。）</P>
<P>B: OK, as long as we don’t have to stay long!</P>
<P>（好吧，只要我们不必呆得太久。）</P>
<P>【Kim’s Note】 This pattern is useful because it helps you set conditions. If you want to negotiate anything, you will need to know this pattern!</P>
<P>
<P></P>
<P></P>
<P><B>6. as soon as… </B><B>一 </B><B>…… </B><B>就…… 
<P></P></B>
<P></P><BR>I’ll come as soon as I finish. 
<P></P>
<P></P><BR>[ aIl kQm Az sun Az aI 5fInIF] 
<P></P>
<P></P><BR>（我一做完就来。） 
<P></P>
<P></P><BR>
<P></P>
<P></P>
<P><B>7. ask… for… </B><B>向某人要…… 
<P></P></B>
<P></P>
<P>He asked me for money.</P>
<P>[ hi Askt mi fRr 5mQnI]</P>
<P>（他向我要钱。）</P>
<P>
<P></P>
<P></P>
<P><B>8. be able to… </B><B>能够……</B></P>
<P>I haven’t been able to sleep very well recently.</P>
<P>[aI 5hAvnt bIn 5ebl tu slip 5vZrI wZl 5ris[ntlI ]</P>
<P>（最近我总是睡不好。）</P>
<P>
<P></P>
<P></P>
<P><B>9. be against… </B><B>反对…… 
<P></P></B>
<P></P>
<P>Are you against me?</P>
<P>[Br ju [5gZnst mi]</P>
<P>（你反对我吗？）</P>
<P><B>
<P></P></B>
<P></P>
<P><B>10. be away from… </B><B>离开…… 
<P></P></B>
<P></P>
<P>Actually, I really hate being away from my family so much.</P>
<P>[5AktFu[li aI 5ri[lI het 5biIN [5we frRm maI 5fAmlI so mQtF]</P>
<P>（事实上，我真讨厌经常离开我的家人。）</P>
<P>【Kim’s Note】 Some people like to be away from home and some people don’t. While still other people say they don’t like to be away from home, yet they go away on business every chance they get!</P>
<P>
<P></P>
<P></P>
<P><B>11. …be going well. </B><B>……很顺利。</B></P>
<P>Everything is going well.</P>
<P>（一切都很顺利。）</P>
<P>【Kim’s Note】Be careful with this sentence! Most bosses know it’s a big lie! If you use this sentence be sure to have at least one detail ready to back up your story!</P>
<P><B>
<P></P></B>
<P></P>
<P><B>12. believe in … </B><B>信仰……</B></P>
<P>I don’t believe in ghosts.</P>
<P>（我不相信有鬼。）</P>
<P>
<P></P>
<P></P>
<P><B>13. By the time… </B><B>到……时候 
<P></P></B>
<P></P>
<P>By the time we got to the movie theater the film had already started.</P>
<P>（当我们到了电影院的时候，电影都开始了。）</P>
<P>
<P></P>
<P></P><B>14. Can I remind you to… </B><B>我想提醒你…… 
<P></P></B>
<P></P>
<P>Can I remind you to call me at 7 tomorrow morning? 
<P></P>
<P></P>
<P>（我想提醒你一下，明早七点叫醒我。） 
<P></P>
<P></P>
<P>
<P></P>
<P></P><B>15. can’t afford to… </B><B>无法承受……</B> 
<P></P><BR>We couldn’t afford to keep our car, so we sold it. 
<P></P><BR>（我们养不起我们那辆车，只好卖掉了。） 
<P></P><BR>【Kim’s Note】Some guys always complain about what they can’t afford, if this describes you, you’d better learn English quickly and get a better job. 
<P></P><BR>
<P></P>
<P></P><B>16. can’t agree…more </B><B>完全同意…… 
<P></P></B>
<P></P><BR>I couldn’t agree with you more. 
<P></P><BR>（我完全同意你的意见）。 
<P></P><BR>
<P></P>
<P></P><B>17. Do you approve of…? </B><B>你赞成/</B><B>同意……吗？ 
<P></P></B>
<P></P><BR>Do you approve of the new manager? 
<P></P><BR>（你认同这个新上任的经理吗？） 
<P></P><BR>
<P></P>
<P></P><B>18. Do you have…? </B><B>你有……吗？</B> 
<P></P>
<P></P><BR>Do you have anything to say? 
<P></P><BR>（你有什么话要说？） 
<P></P><BR>
<P></P>
<P></P><B>19. Do you know how to…? </B><B>你会……吗？ 
<P></P></B>
<P></P><BR>Do you know how to cook? 
<P></P><BR>（你会做饭吗？） 
<P></P><BR>
<P></P>
<P></P><B>20. Do you recall…? </B><B>你记得……吗？ 
<P></P></B>
<P></P><BR>Do you recall the name of the book? 
<P></P><BR>（你记得书的名字吗？） 
<P></P><BR>
<P></P>
<P></P>
<P><B>21. enough…to… </B><B>足够做…… 
<P></P></B>
<P></P>
<P>I haven’t got enough money to go on vacation.</P>
<P>（我没有足够的钱去度假。）</P>
<P>I don’t have enough time to waste talking to you!</P>
<P>（我没有太多时间可以浪费来和你说话。）</P>
<P>
<P></P>
<P></P>
<P><B>22. get something done. </B><B>叫别人做某事。</B></P>
<P>When are you going to get the roof repaired?</P>
<P>（你准备什么时候叫人来修屋顶？）</P>
<P>
<P></P>
<P></P>
<P><B>23. have difficulty in… </B><B>在……方面有困难。 
<P></P></B>
<P></P><BR>People often have great difficulty in reading my writing. 
<P></P>
<P></P><BR>（通常人们都很难看清我写的字。） 
<P></P>
<P></P><BR>
<P></P>
<P></P><B>24. have never…before. </B><B>从来没有……</B> 
<P></P><BR>He has never driven a car before. 
<P></P><BR>（他从来没有开过车。） 
<P></P><BR>
<P></P>
<P></P><B>25. haven’t…for a long time. </B><B>好久没有……</B> 
<P></P><BR>We haven’t seen each other for a long time. 
<P></P><BR>（我们好久没见了。） 
<P></P><BR>
<P></P>
<P></P><B>26. haven’t…so far. </B><B>目前为止还没有……</B> 
<P></P><BR>We haven’t had any problem so far. 
<P></P><BR>（目前为止我们还没有遇到任何问题。） 
<P></P><BR>【Kim’s Note】This is a good sentence to show your positive attitude in a potentially bad situation. If someone wants to know how a business merger or negotiation is going, this is the perfect answer. 
<P></P><BR>
<P></P>
<P></P><B>27. How often…? </B><B>什么时候 </B><B>…… </B><B>一次？</B> 
<P></P><BR>How often do you go to the movies? 
<P></P><BR>（你多久去看一次电影？） 
<P></P><BR>How often do you go out to eat? 
<P></P><BR>（你多久在外面吃一次饭？） 
<P></P><BR>How often do you visit your parents? 
<P></P><BR>（你多久去看望你父母一次？） 
<P></P><BR>How often do you call your wife? 
<P></P><BR>（你多久给你妻子打一次电话？） 
<P></P><BR>How often do you read the newspaper? 
<P></P><BR>（你多久看一次报纸？） 
<P></P><BR>【Kim’s Note】 This is a great way to find out information, just be careful not to go too far, or you might hear the answer, “None of your business!” 
<P></P><BR>
<P></P>
<P></P>
<P><B>28. How was…? </B><B>……怎么样？ 
<P></P></B>
<P></P>
<P>How was your trip to America?</P>
<P>（你的美国之旅怎么样？）</P>
<P>
<P></P>
<P></P>
<P><B>29. I’m always doing… </B><B>我总是…… 
<P></P></B>
<P></P>
<P>I’m always losing things.</P>
<P>（我总是丢东西。）</P>
<P>I’m always forgetting people’s names.</P>
<P>（我总是忘记别人的名字。）</P>
<P>
<P></P>
<P></P>
<P><B>30. I’m calling to… </B><B>我打电话来…… 
<P></P></B>
<P></P>
<P>I’m calling to confirm your booking.</P>
<P>（我打电话来确认你的订票。）</P>
<P>I’m calling to ask about the advertisement I read in today’s paper.<BR>（我打电话来询问我今天在报纸上看到的广告。）</P>
<P>I’m calling to request a catalogue.</P>
<P>（我打电话来索取目录册。）</P>
<P>I’m calling to file a complaint.</P>
<P>（我打电话来投诉。）</P>
<P>【Kim’s Note】 This sentence pattern is so essential for good phone communication. Americans always announce the reason for their call during business hours. No one has time to waste making small talk. Learn to get directly to the point.</P>
<P>
<P></P>
<P></P>
<P><B>31. I’m good at… </B><B>我擅长…… 
<P></P></B>
<P></P><BR>I’m good at English. 
<P></P>
<P></P><BR>（我擅长英语。） 
<P></P>
<P></P><BR>I’m good at cooking. 
<P></P>
<P></P><BR>（我擅长做菜。） 
<P></P>
<P></P><BR>I’m good at judging other people. 
<P></P>
<P></P><BR>（我擅长判断别人。） 
<P></P>
<P></P><BR>I’m good at remembering names. 
<P></P>
<P></P><BR>（我擅长记住别人的名字。） 
<P></P>
<P></P><BR>【Kim’s Note】 I know it is not very Chinese to say what your are good at doing. In fact, it is probably difficult to overcome your shyness and modesty enough to practice this sentence pattern. That’s why it is perfect to build your confidence. Think of something you are good at doing and repeat it ten times a day! 
<P></P>
<P></P><BR>
<P></P>
<P></P>
<P><B>32. I’m here to… </B><B>我是来这里…… 
<P></P></B>
<P></P>
<P>I’m here to let you know the truth.</P>
<P>（我是来这里告诉你真相的。）</P>
<P>【Kim’s Note】 This is such a classic TV and movie sentence. Someone is always showing up on a rainy night just to tell the truth about some deeply buried secret.</P>
<P>
<P></P>
<P></P>
<P><B>33. I’m interested in… </B><B>我对……感兴趣。</B></P>
<P>I’m interested in the Internet.</P>
<P>（我对互联网很感兴趣。）</P>
<P>I’m interested in everything.</P>
<P>（我对所有的事都感兴趣。）</P>
<P>
<P></P>
<P></P>
<P><B>34. I’m looking for… </B><B>我在找…… 
<P></P></B>
<P></P>
<P>I’m looking for Stone. Do you know where he is?</P>
<P>（我在找石头, 你知道他在哪儿吗？）</P>
<P><B>
<P></P></B>
<P></P>
<P><B>35. I’m making every effort to… </B><B>我尽力…… 
<P></P></B>
<P></P>
<P>I’m making every effort to impress my new boss.</P>
<P>（我正在尽一切努力给我的新老板留下深刻的印象。） 
<P></P>
<P></P>
<P>【Kim’s Note】Making every effort to do something usually pays off in the end! Make every effort to learn English and you will see what I mean! 
<P></P>
<P></P>
<P>
<P></P>
<P></P>
<P><B>36. I’m opposed to… </B><B>我反对…… 
<P></P></B>
<P></P>
<P>Actually, I’m strongly opposed to the plan. 
<P></P>
<P></P>
<P>（事实上，我强烈反对这项计划。） 
<P></P>
<P></P>
<P>
<P></P>
<P></P>
<P><B>37. I’m sorry to… </B><B>感到难过 
<P></P></B>
<P></P>
<P>I’m sorry to hear that your father is ill.</P>
<P>（听说你父亲病了，我感到很难过。） 
<P></P>
<P></P>
<P>
<P></P>
<P></P>
<P><B>38. I’m thinking of… </B><B>我在考虑…… 
<P></P></B>
<P></P>
<P>I’m thinking of buying a car.</P>
<P>（我在考虑买辆车。）</P>
<P>I’m thinking of moving to Australia.</P>
<P>（我在考虑移民去澳大利亚。）</P>
<P>I’m thinking of getting married.</P>
<P>（我在考虑结婚。）</P>
<P>I’m thinking of changing my job.</P>
<P>（我在考虑跳槽。）</P>
<P>【Kim’s Note】 This sentence pattern is useful for starting a conversation. If you start a sentence by saying you are thinking of doing something, people will surely want to know why.</P>
<P>【李阳老师的提醒】</P>
<P>“I’m thinking of…” 是表达自己的计划、想法的最佳句型。</P>
<P>
<P></P>
<P></P>
<P><B></B></P>
<P>
<P></P>
<P></P>
<HR>
</TD></TR><!--printpage.asp##{$bbslist}循环部分-->
<TR>
<TD vAlign=center align=top>--&nbsp;&nbsp;作者：frankstone<BR>--&nbsp;&nbsp;发布时间：2005-8-19 19:57:25<BR><BR>--&nbsp;&nbsp;<BR>
<P><B>39. I’m trying to… </B><B>我正在试图……</B></P>
<P>I am trying to find a job but it’s not easy.</P>
<P>（我正在试图找份工作，但是并不容易。）</P>
<P>
<P>
<P><B>40. I apologize for… </B><B>我对……表示歉意。</B></P>
<P>I apologize for what I said about you.</P>
<P>（我对我说过你的闲话向你表示歉意。）</P>
<P>【Kim’s Note】This is probably one of the hardest sentences in the world to say. If you say something awful about someone, the best thing to do is apologize sincerely, denying that you said it will only make matters worse.</P>
<P>
<P>
<P>
<P><B>41. I can’t believe… </B><B>我不敢相信…… 
<P></B>
<P>
<P>I can’t believe what I’m hearing.</P>
<P>（我简直不敢相信我的耳朵。）</P>
<P>
<P>
<P>
<P><B>42. I can’t understand… </B><B>我搞不懂……</B></P>
<P>I can’t understand why he’s so selfish.</P>
<P>（我搞不懂他怎么会这么自私。）</P>
<P>
<P>
<P>
<P><B>43. I come from… </B><B>我来自……</B></P>
<P>I come from Beijing, China.</P>
<P>（我来自中国北京。）</P>
<P>
<P>
<P>
<P><B>44. I don’t think… </B><B>我认为……不…… 
<P></B>
<P>
<P>I don’t think that’s a good idea.</P>
<P>（我认为那不是个好主意。）</P>
<P>I don’t think we should wait for him.</P>
<P>（我认为我们不应该等他。）</P>
<P>
<P>
<P>
<P><B>45. I’d rather…than… </B><B>我宁可……而不…… 
<P></B>
<P>
<P>I’d rather stay at home tonight than go to the movies.</P>
<P>（今晚我宁可呆在家里，也不愿去看电影。）</P>
<P>
<P>
<P>
<P><B>46. I have a passion for… </B><B>我对……很痴迷。 
<P></B>
<P>
<P>I have a passion for soccer. 
<P>
<P>
<P>（我对足球特别感兴趣。） 
<P>
<P>
<P>I have a passion for sweet food! 
<P>
<P>
<P>（我特别喜欢甜食。） 
<P>
<P>
<P>
<P>
<P>
<P><B>47. I have no experience in… </B><B>我没有……的经验。 
<P></B>
<P>
<P>I have no experience in dating girls. 
<P>
<P>
<P>（我没有和女孩子约会的经验。） 
<P>
<P>
<P>
<P>
<P>
<P><B>48. I have nothing to do with… </B><B>……与我无关。 
<P></B>
<P>
<P>I have nothing to do with the matter.</P>
<P>（这件事与我无关。）</P>
<P>I have nothing to do with my old classmates anymore.</P>
<P>（我和我的老同学都不再有联系了。）</P>
<P><B>
<P></B>
<P>
<P><B>49. I insist… </B><B>我坚持……</B></P>
<P>I insist that you let me pay for the meal.</P>
<P>（我坚持由我来买单。）</P>
<P>
<P>
<P>
<P><B>50. I must have been… </B><B>我肯定是……</B></P>
<P>The phone rang but I didn’t hear it. I must have been asleep.</P>
<P>（电话响了，但是我没听到。我肯定是睡着了。）</P>
<P>I must have been crazy to fall in love with you!</P>
<P>（我肯定是疯狂地爱上你了。）</P>
<P>
<P>
<P>
<P>I am happiest when I am with students.The students in China have captured my heart.I feel very lucky to have the chance to teach English to such enthusiastic learners. 
<P>
<P>
<P>每当我和学生在一起时，那是我最开心的时刻。中国的学生已经深深地震撼了我的心。我很幸运有这样一个机会给这么多热情的学习者教授英语。American Chief Editor：Kim 
<P>
<P>
<P><B>
<P></B>
<P>
<P><B>51. I prefer…to… </B><B>我更喜欢……而不…… 
<P></B>
<P>
<P>I prefer driving to travelling by train.</P>
<P>（我更喜欢自己开车而不愿坐火车旅行。）</P>
<P>I prefer the weather in Guangzhou to the weather in Beijing.</P>
<P>（和北京的天气比起来，我更喜欢广州的天气。）</P>
<P>
<P>
<P>
<P><B>52. I promise… </B><B>我发誓……</B></P>
<P>I promise that I won’t tell anybody what you said.</P>
<P>（我发誓我决不会将你对我说的话告诉任何人。）</P>
<P>【Kim’s Note】 This sentence is so often untrue. Most people can’t resist telling just one person something, and that person usually tells another person. The best policy with secrets is to tell no one.</P>
<P>
<P>
<P>
<P><B>53. I refuse to… </B><B>我拒绝……</B></P>
<P>I refuse to answer such a silly question.</P>
<P>（我拒绝回答这么愚蠢的问题。）</P>
<P>【Kim’s Note】This is a great sentence to avoid answering something stupid. It will always make the person who asked feel foolish.</P>
<P>
<P>
<P>
<P><B>54. I regret doing… </B><B>我后悔……</B></P>
<P>I now regret saying what I said.</P>
<P>（现在我为自己说过的话感到后悔。）</P>
<P>【Kim’s Note】 Life is too short to waste time in regrets, but everyone does something every now and then that they regret. The best policy is to forget it and move on. Learn the lesson and forget the details!</P>
<P>
<P>
<P>
<P><B>55. I regret to…</B><B>我很抱歉…… 
<P></B>
<P>
<P>I regret to inform you that we are unable to offer you the job.</P>
<P>（我很抱歉地通知你，我们无法向你提供这份工作。）</P>
<P>
<P>
<P>
<P><B>56. I suggest… </B><B>我建议……</B></P>
<P>It’s a nice day. I suggest that we go out for a walk.</P>
<P>（今天天气真好，我建议大家出去散步。）</P>
<P>I suggest you study more and fool around less.</P>
<P>（我建议你多学习少到处游荡。）</P>
<P>I suggest you apply for your visa as early as possible.</P>
<P>（我建议你尽早去申请签证。）</P>
<P>I suggest that you take better care of your health.</P>
<P>（我建议你多加注意你的健康。）</P>
<P>【Kim’s Note】 This is another top sentence pattern that can be used with hundreds of ideas. This is the way to increase your English ability. I suggest that you take it seriously.</P>
<P><B>57. I used to… </B><B>我过去常常……</B></P>
<P>I used to watch TV a lot.</P>
<P>（我过去常看电视。）</P>
<P>I used to smoke, but I quit two years ago.</P>
<P>（我过去常吸烟，但是两年前戒掉了。）</P>
<P>I used to worry all the time.</P>
<P>（我以前总是担心这担心那的。）</P>
<P>I used to make a lot less money than I do now.</P>
<P>（我以前比我现在挣的钱少多了。）</P>
<P>I used to think learning English was a waste of time.</P>
<P>（我以前认为学英语是浪费时间。）</P>
<P>【Kim’s Note】Times change and people do too. It’s easy to think of a lot of things you used to do. Now it should be easier to describe these things in English.</P>
<P>
<P>
<P>
<P><B>58. I’ve already… </B><B>我已经…… 
<P></B>
<P>
<P>I’ve already been there.</P>
<P>（我已经去过那里了。）</P>
<P>I’ve already told you three times!</P>
<P>（我已经告诉过你三次了！）</P>
<P>
<P>
<P>
<P><B>59. I’ve got… </B><B>我有……</B></P>
<P>I’ve got a new car.</P>
<P>（我有辆新车。）</P>
<P>
<P>
<P>
<P><B>60. I’ve just… </B><B>我刚刚……</B></P>
<P>I’ve just had lunch.</P>
<P>（我刚刚吃过午饭。）</P>
<P>
<P>
<P>
<P><B>61. I’ve no idea … </B><B>我不知道……</B></P>
<P>I’ve no idea what he is like.</P>
<P>（我不知道他这个人什么样。）</P>
<P>
<P>
<P>
<P><B>62. I was told… </B><B>我听说…… 
<P></B>
<P>
<P>I was told the meeting is cancelled.</P>
<P>（我听说会议取消了。）</P>
<P>
<P>
<P>
<P><B>63. I wish… </B><B>我祝愿/</B><B>希望……</B></P>
<P>I wish you good luck. 
<P>
<P>
<P>（祝你好运。） 
<P>
<P>
<P>
<P>
<P><B>64. If I did…, I would… </B><B>如果我……，我一定会……</B></P>If I knew his number, I would phone him. 
<P></P>（如果我知道他的电话号码，我一定会打电话给他。） 
<P></P>If I had enough money, I would buy a car. 
<P></P>（如果我有钱的话，我一定会去买部车。） 
<P></P>
<P>
<P><B>65. in case… </B><B>以免/</B><B>以防…… 
<P></B>
<P>I’ll draw a map for you in case you can’t find our house.</P>（我还是画张地图给你，以免你找不着我们家。） 
<P></P>Here’s my number in case you’re ever in town and you need anything. 
<P></P>（这是我的电话号码，以防你来到小镇上需要什么帮助。） 
<P></P>
<P>
<P><B>66. In spite of… </B><B>尽管…… 
<P></B>
<P>In spite of the rain, we enjoyed our vacation.</P>（尽管下着雨，我们还是尽情享受假日。） 
<P></P>He managed to get into college in spite of his bad grades. 
<P></P>（尽管他的考分很低，他还是想方设法进了大学。） 
<P></P>
<P>
<P><B>67. Is there…? </B><B>有……吗？</B> 
<P>
<P>Is there anyone you know who can do this job?</P>（你知道有谁能做这件事吗？） 
<P></P>
<P>
<P><B>68. …isn’t for me. </B><B>……不是我所喜欢的。 
<P></B>
<P>Baseball isn’t for me.</P>（棒球不是我所喜欢的运动。） 
<P></P>
<P>
<P><B>69. It is expected that… </B><B>预计/</B><B>估计……</B></P>It is expected that the weather will be good soon. 
<P></P>（估计天气很快会好起来。） 
<P></P>
<P>
<P><B>70. It is getting… </B><B>渐渐地 </B><B>……</B></P>It is getting dark. Let’s go home. 
<P></P>（天快黑了，我们回家吧！ ） 
<P></P><B>
<P></B>
<P><B>71. It is impossible to… </B><B>不可能…… 
<P></B>
<P>Your writing is awful. It is impossible to read it.</P>（你的字写得太糟了，完全没法读。） 
<P></P>
<P>
<P><B>72. It is said that… </B><B>据说……</B></P>It is said that she works 16 hours a day. 
<P></P>（据说她每天工作16个小时。） 
<P></P>It is said that English is the international language. 
<P></P>（听说英语是国际语言。） 
<P></P>
<P>
<P><B>73. It’s a waste of time/money doing… </B><B>……真是浪费时间/</B><B>金钱！ 
<P></B>
<P>
<P>It’s a waste of money buying things you don’t need. 
<P>
<P>
<P>（你买些自己不需要的东西，真是浪费金钱。） 
<P>
<P>
<P>It’s a waste of time memorizing grammar rules and lifeless vocabulary words. 
<P>
<P>
<P>（去记忆语法规则和浩瀚的词汇，真是浪费时间。） 
<P>
<P>
<P>
<P>
<P><B>74. It’s no use… </B><B>……没有用。</B></P>There’s nothing you can do about the situation. It’s no use worrying about it. 
<P></P>（既然你没法改变这个情况，老是担心也没用。） 
<P></P>
<P>
<P><B>75. It’s not worth… </B><B>不值得…… 
<P></B>
<P>The film isn’t very good. It’s not worth seeing.</P>（这场电影不怎么好，不值得看。） 
<P></P>
<P>
<P><B>76. It’s the first time… </B><B>这是第一次……</B></P>It’s the first time he has driven a car. 
<P></P>（这是他第一次开车。） 
<P></P>
<P>
<P><B>77. It’s time… </B><B>是时候做……</B> 
<P>
<P>It’s late. It’s time we went home.</P>（天晚了，我们该回家了。） 
<P></P>It’s time we took better care of the environment. 
<P></P>（是我们该好好保护环境的时候了。） 
<P></P>
<P>
<P><B>78. It looks like… </B><B>看上去…… 
<P></B>
<P>It looks like it’s going to be a dreary day.</P>（看上去一天都会阴沉沉的。） 
<P></P>
<P>
<P><B>79. It might… </B><B>可能会……</B></P>It might rain. We’d better take an umbrella. 
<P></P>（可能会下雨，我们最好带把伞！） 
<P></P>
<P>
<P><B>80. Maybe you should… </B><B>我想你应该…… 
<P></B>
<P>Maybe you should quit smoking.</P>（我想你应该戒烟。） 
<P></P>Maybe you should ask someone for directions. 
<P></P>（我想你应该向别人问问路。） 
<P></P>
<P>
<P><B>81. might as well… </B><B>不防/</B><B>不如……</B></P>I am so tired. We might as well get a taxi. 
<P></P>（我太累了，我们不如搭出租车吧！） 
<P></P>It\'\'\'\'s so late, we might as well forget about seeing the movie. 
<P></P>（太晚了，我们不如不要去看电影了吧！） 
<P></P>
<P>
<P><B>82. not…any more / longer. </B><B>不再…… 
<P></B>
<P>Ann doesn’t work here any more / longer. She left last month.</P>（安已经不在这里工作了。她上个月就离开了。） 
<P></P>
<P>
<P>
<P><B>83. not…until… </B><B>直到……才…… 
<P></B>
<P>
<P>I didn’t get up until half past ten.</P>
<P>（直到十点半我才起床。）</P>
<P>I didn’t believe you until it was too late!</P>
<P>（直到一切都来不及了我才相信了你。）</P>
<P>
<P>
<P>
<P><B>84. Say hello to…for me. </B><B>替我向……问好。 
<P></B>
<P>
<P>Say hello to your parents for me.</P>
<P>（替我向你父母问好。）</P>
<P>【Kim’s Note】This pattern is a good way to make a good impression. When you remember to send greetings to someone, people always notice and appreciate it.</P>
<P>
<P>
<P>
<P><B>85. so that… </B><B>以便…… 
<P></B>
<P>
<P>She’s learning English so that she can study in America.</P>（她正在学英语，以便可以去美国读书。） 
<P></P>I’m trying to speak slowly so that you will understand me better. 
<P></P>（我尽量说慢点，以便你更加清楚地明白我的意思。） 
<P></P>
<P>
<P><B>86. The…, the better… </B><B>越……就越好。 
<P></B>
<P>The warmer the weather, the better I feel.</P>（天气越温暖，我感觉越好。） 
<P></P>The farther away you are, the better you look! 
<P></P>（你离得越远，看起来就越帅。） 
<P></P>【Kim’s Note】This is of course a joke sentence. If you say it to someone seriously, they would probably be offended! 
<P></P>
<P></P><B>87. There is no doubt about… </B><B>无疑…… 
<P></B>
<P>There is no doubt about his role in the robbery.</P>（他无疑参与了这桩抢劫案。） 
<P></P>
<P>
<P>
<P><B>88. There’s no point in … </B><B>……毫无意义。 
<P></B>
<P>There is no point in complaining. They can\'\'\'\'t do anything to help you. 
<P>
<P>（抱怨毫无意义。他们没办法帮助你。） 
<P>
<P>
<P>
<P><B>89. There is no reason to… </B><B>没有理由…… 
<P></B>
<P>Come on! There is no reason to feel discouraged.</P>（没事！你不用泄气。） 
<P></P>
<P>
<P>
<P>
<P><B>90. too…for… </B><B>对某人来说太…… 
<P></B>
<P>
<P>This shirt is too big for me.</P>
<P>（这件衬衣对我来说太大了。）</P>
<P>
<P>
<P>
<P><B>91. unless… </B><B>除非……否则…… 
<P></B>
<P>
<P>You can’t go in unless you are a member.</P>
<P>（除非你是会员，否则不得入内。）</P>
<P>We can’t help you unless you tell us what the problem is.</P>
<P>（除非你告诉我们出了什么问题，否则我们帮不了你。）</P>
<P>
<P>
<P>
<P><B>92. …very often. </B><B>经常……</B></P>
<P>Ann doesn’t drink coffee very often.</P>
<P>（安并不常常喝咖啡。）</P>
<P>I don\'\'\'\'t lose my temper very often, but when I do, look out!</P>
<P>（我并不是常常发脾气，但是我发脾气的时候，你要小心点！）</P>
<P>
<P>
<P>
<P><B>93. What kind of… </B><B>什么样的…… 
<P></B>
<P>
<P>What kind of food do you like best?</P>
<P>（你最喜欢吃什么？）</P>
<P>What kind of perfume are you wearing?</P>
<P>（你喷的是什么香水？）</P>
<P>What kind of books do you like to read?</P>
<P>（你喜欢看什么书？）</P>
<P>【Kim’s Note】 This is also an extremely useful conversation pattern. It is a good way to get someone talking because most people love to talk about their likes and dislikes.</P>
<P>
<P>
<P>
<P><B>94. What time… </B><B>什么时候……</B></P>
<P>What time do the banks close in Hong Kong?</P>
<P>（香港的银行什么时候关门？）</P>
<P>What time are you leaving for Beijing tomorrow?</P>
<P>（你明天什么时候去北京？）</P>
<P>
<P>
<P>
<P><B>95. What’s…like? </B><B>……怎么样？</B></P>
<P>What’s Stone Lee like?</P>
<P>（李石头这人怎么样？）</P>
<P>What’s living in China like?</P>
<P>（住在中国怎么样？）</P>
<P>What’s your new boss like?</P>
<P>（你的新老板怎么样？）</P>
<P>What’s your mother-in-law like?</P>
<P>（你岳母这人怎么样？）</P>
<P>【Kim’s Note】Americans just love this type of question. They always want to know what something is like.</P>
<P>
<P>
<P>
<P><B>96. Would it be correct to… </B><B>……对吗？ 
<P></B>
<P>
<P>Would it be correct to say that San Francisco has a large Chinese population?</P>
<P>（旧金山有很多中国人，对吗？）</P>
<P>
<P>
<P>
<P><B>97. Would you please… </B><B>你可不可以……</B> 
<P>
<P>
<P>Would you please be quiet? I’m trying to concentrate.</P>
<P>（你可不可以安静一点？我没法集中精神。）</P>
<P>Would you please give me your number?</P>
<P>（你可不可以告诉我你的电话号码？）</P>
<P>【Kim’s Note】This is such a good sentence pattern to show off your manners.</P>
<P>
<P>
<P>
<P><B>98. You must be… </B><B>你一定……</B></P>
<P>You’ve been traveling all day. You must be tired.</P>
<P>（你整天都在旅途中，一定累了吧。）</P>
<P>You walked home in the dark by yourself? You must be crazy!</P>
<P>（你一个人在黑夜中独自走回家？你一定是疯了！）</P>
<P>
<P>
<P>
<P><B>99. You’d better… </B><B>你最好…… 
<P></B>
<P>
<P>You’d better work harder.</P>
<P>（你最好工作努力点。）</P>
<P>You’d better believe me.</P>
<P>（你最好相信我。）</P>
<P>You’d better take a break.</P>
<P>（你最好休息一下。）</P>
<P>You\'\'\'\'d better listen to your mother.</P>
<P>（你最好听你妈妈的话。）</P>
<P>
<P>
<P>
<P><B>100. You’re bound to… </B><B>你肯定…… 
<P></B>
<P>
<P>You’re bound to have a good vacation.</P>
<P>（你肯定会有一个愉快的假日。）</P>
<P>You’re bound to forget something if you leave in a hurry.</P>
<P>（如果你离开得太匆忙，你肯定会忘东西的。）</P>
<P><B>You’re bound to improve your English if you learn useful sentence patterns! 
<P></B>
<P>
<P><B>（如果你学习实用的句型，你的英语肯定会进步的。）</B><B> 
<P></B>
<P>
<P>
<P>
<P>
<P>财富统计 
<P>
<P>
<P>句型量：100</P>
<P>句子量：159</P>
<P>词汇量：约3000</P>
<P>所有句子的李阳疯狂英语“三最”口腔肌肉训练记录为 206 秒。</P>
<P>所有句子的你的“三最”口腔肌肉训练记录为 _____ 秒。</P></TD></TR></TBODY></TABLE>]]></description>
</item><item>
<title><![CDATA[第一次使用Blog]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=ewood&amp;id=5399</link>
<author>ewood</author>
<pubDate>2005/4/29 19:27:31</pubDate>
<description><![CDATA[
<P>我要用用blog了,不然太落伍了!^_^</P>]]></description>
</item>
</channel>
</rss>