<?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>R2S &#187; 正则表达式</title> <atom:link href="http://www.road2stat.com/cn/tag/%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f/feed" rel="self" type="application/rss+xml" /><link>http://www.road2stat.com/cn</link> <description>江湖一散人</description> <lastBuildDate>Thu, 26 Jan 2012 08:18:36 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <item><title>正则简单笔记</title><link>http://www.road2stat.com/cn/statistics/a_note_of_regular_expression.html</link> <comments>http://www.road2stat.com/cn/statistics/a_note_of_regular_expression.html#comments</comments> <pubDate>Thu, 27 May 2010 17:50:52 +0000</pubDate> <dc:creator>Xiao Nan</dc:creator> <category><![CDATA[统计之路]]></category> <category><![CDATA[regular expression]]></category> <category><![CDATA[正则表达式]]></category> <category><![CDATA[笔记]]></category><guid isPermaLink="false">http://www.road2stat.com/cn/?p=491</guid> <description><![CDATA[1. 元字符 (Metacharacter) 匹配字符串的开始(位置):  ^ 匹配字符串的开始(不受处理多行选项影响):  A 匹配字符串的结束(位置):  $ 匹配字符串的结束(不受处理多行选项影响):  z 匹配字符串的开始/结束(位置):  b 匹配字符串的结束/行尾(不受处理多行选项影响):  Z 匹配数字/字母/下划线/汉字:  w 匹配(阿拉伯)数字:  d 匹配空白符(空格/全角空格/制表符/换行符):  s 匹配横向制表符:  t 匹配竖向制表符:  v 匹配回车:  r 匹配换行符:  n 匹配换页符:  f 匹配任意字符(除换行符n):  . 前述表达式重复任意次:  * 2. 元字符转义 (查找元字符本身) .  *  &#8230; <a href="http://www.road2stat.com/cn/statistics/a_note_of_regular_expression.html">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h4>1. 元字符 (Metacharacter)</h4><p>匹配字符串的开始(位置):  ^</p><p>匹配字符串的开始(不受处理多行选项影响):  A</p><p>匹配字符串的结束(位置):  $</p><p>匹配字符串的结束(不受处理多行选项影响):  z</p><p>匹配字符串的开始/结束(位置):  b</p><p>匹配字符串的结束/行尾(不受处理多行选项影响):  Z</p><p>匹配数字/字母/下划线/汉字:  w</p><p>匹配(阿拉伯)数字:  d</p><p>匹配空白符(空格/全角空格/制表符/换行符):  s</p><p>匹配横向制表符:  t</p><p>匹配竖向制表符:  v</p><p>匹配回车:  r</p><p>匹配换行符:  n</p><p>匹配换页符:  f</p><p>匹配任意字符(除换行符n):  .</p><p>前述表达式重复任意次:  *</p><h4>2. 元字符转义 (查找元字符本身)</h4><p>.  *  \  ^  $  等.</p><h4>3. 字符类 (自定义的元字符):  [ ]</h4><p>e.g. [13579] 匹配1或3或5或7或9中的任意一个数字.</p><h4>4. 限定符 (规定表达式重复次数)</h4><p>重复至少0次:  *</p><p>重复至少1次:  +</p><p>重复0次或1次:  ?</p><p>重复n次:  {n}</p><p>重复n次或更多次:  {n,}</p><p>重复m到n次:  {m,n}</p><p>e.g. d{2,9} 匹配2-9位阿拉伯数字.</p><h4>5. 分枝:  |</h4><p>p.s. 分枝条件按照从左到右的顺序测试. 如果已满足了某个分枝, 则匹配结束. 故使用分枝条件时, 一定要反复斟酌各个条件的书写顺序.</p><h4>6. 反义</h4><p>对于元字符, 把元字符里的字母小写换为大写即表示反义. 对于字符类, [^13579] 匹配除了1或3或5或7或9以外的任意字符. 一个不错的例子:</p><p>&lt;a[^&gt;]+&gt; 匹配用尖括号括起来的以a开头的字符串</p><h4>7. 分组:  ( )</h4><p>和编程写公式时多加括号防止写错有点类似. 不过这里的现实意义强得多, 可以用来写出比较复杂的表达式.</p><h4>8. 贪婪/懒惰</h4><p>在正则表达式中, [最先开始的匹配] 拥有最高优先权. 其次才是默认的贪婪匹配原则. 与之对应的懒惰匹配原则:</p><p>重复0次或1次:  ??</p><p>重复至少1次:  +?</p><p>重复m到n次:  {m,n}?</p><p>重复n次以上:  {n,}?</p><p>重复任意次:  *?</p><h4>9. 零宽断言</h4><p>(1) 零宽度正预测先行断言:  (?=exp)</p><p>断言此位置之后能匹配表达式exp</p><p>e.g. bw+(?=lyb) 匹配以ly结尾的字符串的前面部分.</p><p>(2) 零宽度正回顾后发断言:  (?&lt;=exp)</p><p>断言此位置之前能匹配表达式exp</p><p>e.g. (?&lt;=bpre)w+b 匹配以pre开头的字符串的后面部分.</p><p>(3) 零宽度负预测先行断言:  (?!exp)</p><p>断言此位置之后不能匹配表达式exp</p><p>e.g. b((?!exe)w)+b 匹配不包含连续字符串exe的字符串.</p><p>(4) 零宽度负回顾后发断言:  (?&lt;!exp)</p><p>断言此位置之前不能匹配表达式exp</p><p>e.g. (?&lt;!010)d{8} 匹配前面不是010的8位数字.</p><h4>10. 注释</h4><p>(?#注释内容)</p> ]]></content:encoded> <wfw:commentRss>http://www.road2stat.com/cn/statistics/a_note_of_regular_expression.html/feed</wfw:commentRss> <slash:comments>2</slash:comments> </item> </channel> </rss>
