RegEx正则表达

介绍演示

正则表达式 (Regular Expression) 又称 RegEx, 是用来匹配字符的一种工具. 在一大串字符中寻找你需要的内容. 它常被用在很多方面, 比如网页爬虫, 文稿整理, 数据筛选等等. 最简单的一个例子, 比如我需要爬取网页中每一页的标题. 而网页中的标题常常是这种形式.

我是标题</ title>

</code></pre> 
 <p>而且每个网页的标题各不相同, 我就能使用正则表达式, 用一种简单的匹配方法, 一次性选取出成千上万网页的标题信息. 正则表达式绝对不是一天就能学会和记住的, 因为表达式里面的内容非常多, 强烈建议, 现在这个阶段, 你只需要了解正则里都有些什么, 不用记住, 等到你真正需要用到它的时候, 再反过头来, 好好琢磨琢磨, 那个时候才是你需要训练自己记住这些表达式的时候.</p> 
 <h2>简单的匹配 </h2> 
 <p>正则表达式无非就是在做这么一回事. 在文字中找到特定的内容, 比如下面的内容. 我们在 “dog runs to cat” 这句话中寻找是否存在 “cat” 或者 “bird”.</p> 
 <pre><code># matching string
pattern1 = "cat"
pattern2 = "bird"
string = "dog runs to cat"
print(pattern1 in string)    # True
print(pattern2 in string)    # False

</code></pre> 
 <p>但是正则表达式绝非不止这样简单的匹配, 它还能做更加高级的内容. 要使用正则表达式, 首先需要调用一个 python 的内置模块 <code>re</code>. 然后我们重复上面的步骤, 不过这次使用正则. 可以看出, 如果 <code>re.search()</code> 找到了结果, 它会返回一个 match 的 object. 如果没有匹配到, 它会返回 None. 这个 <code>re.search()</code> 只是 <code>re</code> 中的一个功能, 之后会介绍其它的功能.</p> 
 <pre><code>import re

# regular expression
pattern1 = "cat"
pattern2 = "bird"
string = "dog runs to cat"
print(re.search(pattern1, string))  # <_sre.SRE_Match object; span=(12, 15), match='cat'>
print(re.search(pattern2, string))  # None

</code></pre> 
 <p><ins class="adsbygoogle" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-4601203457616636" data-ad-slot="3397817325" data-adsbygoogle-status="done" data-overlap-observer-io="false" style="display: block; text-align: center; height: 159px; width: 617px;"><ins id="aswift_2_expand" style="display: inline-table; border: none; height: 159px; margin: 0px; padding: 0px; position: relative; visibility: visible; width: 617px; background-color: transparent;"><ins id="aswift_2_anchor" style="display: block; border: none; height: 159px; margin: 0px; padding: 0px; position: relative; visibility: visible; width: 617px; background-color: transparent; overflow: hidden;"><iframe id="aswift_2" name="aswift_2" sandbox="allow-forms allow-pointer-lock allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-top-navigation-by-user-activation" width="617" height="159" frameborder="0" src="https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-4601203457616636&output=html&h=159&slotname=3397817325&adk=3401585631&adf=960100261&w=636&fwrn=4&lmt=1583377291&rafmt=11&psa=0&guci=2.2.0.0.2.2.0.0&format=636x159&url=https%3A%2F%2Fmorvanzhou.github.io%2Ftutorials%2Fpython-basic%2Fbasic%2F13-10-regular-expression%2F&flash=0&wgl=1&dt=1587802197986&bpp=3&bdt=388&idt=102&shv=r20200422&cbv=r20190131&ptt=9&saldr=aa&abxe=1&prev_fmts=700x90%2C250x250&correlator=3466323590182&frm=20&pv=1&ga_vid=1212726724.1583946939&ga_sid=1587802198&ga_hid=1016610859&ga_fc=0&iag=0&icsg=9130715816&dssz=30&mdo=0&mso=0&rplot=4&u_tz=480&u_his=9&u_java=0&u_h=1080&u_w=1920&u_ah=1040&u_aw=1920&u_cd=24&u_nplug=3&u_nmime=4&adx=484&ady=2282&biw=1903&bih=937&scr_x=0&scr_y=0&eid=21065214&oid=3&pvsid=322963587975057&pem=821&ref=https%3A%2F%2Fmorvanzhou.github.io%2Ftutorials%2Fpython-basic%2Fbasic%2F&rx=0&eae=0&fc=896&brdim=0%2C0%2C0%2C0%2C1920%2C0%2C1920%2C1040%2C1920%2C937&vis=1&rsz=%7C%7CeEbr%7C&abl=CS&pfx=0&fu=8344&bc=31&ifi=3&uci=a!3&btvi=2&fsb=1&xpc=I9411BAsV6&p=https%3A//morvanzhou.github.io&dtd=106" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true" data-google-container-id="a!3" data-google-query-id="CMnao5CQg-kCFQQaKgodoykIYA" data-load-complete="true" style="left: 0px; position: absolute; top: 0px; border: 0px; width: 617px; height: 159px;"></iframe></ins></ins></ins></p> 
 <h2>灵活匹配 </h2> 
 <p>除了上面的简单匹配, 下面的内容才是正则的核心内容, 使用特殊的 pattern 来灵活匹配需要找的文字.</p> 
 <p>如果需要找到潜在的多个可能性文字, 我们可以使用 <code>[]</code> 将可能的字符囊括进来. 比如 <code>[ab]</code> 就说明我想要找的字符可以是 <code>a</code> 也可以是 <code>b</code>. 这里我们还需要注意的是, 建立一个正则的规则, 我们在 pattern 的 “” 前面需要加上一个 <code>r</code> 用来表示这是正则表达式, 而不是普通字符串. 通过下面这种形式, 如果字符串中出现 “run” 或者是 “ran”, 它都能找到.</p> 
 <pre><code># multiple patterns ("run" or "ran")
ptn = r"r[au]n"       # start with "r" means raw string
print(re.search(ptn, "dog runs to cat"))    # <_sre.SRE_Match object; span=(4, 7), match='run'>

</code></pre> 
 <p>同样, 中括号 <code>[]</code> 中还可以是以下这些或者是这些的组合. 比如 <code>[A-Z]</code> 表示的就是所有大写的英文字母. <code>[0-9a-z]</code> 表示可以是数字也可以是任何小写字母.</p> 
 <pre><code>print(re.search(r"r[A-Z]n", "dog runs to cat"))     # None
print(re.search(r"r[a-z]n", "dog runs to cat"))     # <_sre.SRE_Match object; span=(4, 7), match='run'>
print(re.search(r"r[0-9]n", "dog r2ns to cat"))     # <_sre.SRE_Match object; span=(4, 7), match='r2n'>
print(re.search(r"r[0-9a-z]n", "dog runs to cat"))  # <_sre.SRE_Match object; span=(4, 7), match='run'>

</code></pre> 
 <p><ins class="adsbygoogle" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-4601203457616636" data-ad-slot="3397817325" data-adsbygoogle-status="done" data-overlap-observer-io="false" style="display: block; text-align: center; height: 123px; width: 636px;"><ins id="aswift_3_expand" style="display: inline-table; border: none; height: 123px; margin: 0px; padding: 0px; position: relative; visibility: visible; width: 636px; background-color: transparent;"><ins id="aswift_3_anchor" style="display: block; border: none; height: 123px; margin: 0px; padding: 0px; position: relative; visibility: visible; width: 636px; background-color: transparent; overflow: hidden;"><iframe id="aswift_3" name="aswift_3" sandbox="allow-forms allow-pointer-lock allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-top-navigation-by-user-activation" width="636" height="123" frameborder="0" src="https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-4601203457616636&output=html&h=159&slotname=3397817325&adk=3401585631&adf=3131098319&w=636&fwrn=4&lmt=1583377291&rafmt=11&psa=0&guci=2.2.0.0.2.2.0.0&format=636x159&url=https%3A%2F%2Fmorvanzhou.github.io%2Ftutorials%2Fpython-basic%2Fbasic%2F13-10-regular-expression%2F&flash=0&wgl=1&dt=1587802197989&bpp=2&bdt=391&idt=111&shv=r20200422&cbv=r20190131&ptt=9&saldr=aa&abxe=1&prev_fmts=700x90%2C250x250%2C636x159&correlator=3466323590182&frm=20&pv=1&ga_vid=1212726724.1583946939&ga_sid=1587802198&ga_hid=1016610859&ga_fc=0&iag=0&icsg=9130715816&dssz=30&mdo=0&mso=0&rplot=4&u_tz=480&u_his=9&u_java=0&u_h=1080&u_w=1920&u_ah=1040&u_aw=1920&u_cd=24&u_nplug=3&u_nmime=4&adx=484&ady=3137&biw=1903&bih=937&scr_x=0&scr_y=0&eid=21065214&oid=3&pvsid=322963587975057&pem=821&ref=https%3A%2F%2Fmorvanzhou.github.io%2Ftutorials%2Fpython-basic%2Fbasic%2F&rx=0&eae=0&fc=896&brdim=0%2C0%2C0%2C0%2C1920%2C0%2C1920%2C1040%2C1920%2C937&vis=1&rsz=%7C%7CeEbr%7C&abl=CS&pfx=0&fu=8344&bc=31&ifi=4&uci=a!4&btvi=3&fsb=1&xpc=RnhynsXM2u&p=https%3A//morvanzhou.github.io&dtd=115" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true" data-google-container-id="a!4" data-google-query-id="CLy5o5CQg-kCFdgYKgodU_ACLQ" data-load-complete="true" style="left: 0px; position: absolute; top: 0px; border: 0px; width: 636px; height: 123px;"></iframe></ins></ins></ins></p> 
 <h2>按类型匹配 </h2> 
 <p>除了自己定义规则, 还有很多匹配的规则时提前就给你定义好了的. 下面有一些特殊的匹配类型给大家先总结一下, 然后再上一些例子.</p> 
 <ul> 
  <li>\d : 任何数字</li> 
  <li>\D : 不是数字</li> 
  <li>\s : 任何 white space, 如 [\t\n\r\f\v]</li> 
  <li>\S : 不是 white space</li> 
  <li>\w : 任何大小写字母, 数字和 “<em>” [a-zA-Z0-9</em>]</li> 
  <li>\W : 不是 \w</li> 
  <li>\b : 空白字符 (<strong>只</strong>在某个字的开头或结尾)</li> 
  <li>\B : 空白字符 (<strong>不</strong>在某个字的开头或结尾)</li> 
  <li>\ : 匹配 \</li> 
  <li>. : 匹配任何字符 (除了 \n)</li> 
  <li>^ : 匹配开头</li> 
  <li>$ : 匹配结尾</li> 
  <li>? : 前面的字符可有可无</li> 
 </ul> 
 <p>下面就是具体的举例说明啦.</p> 
 <pre><code># \d : decimal digit
print(re.search(r"r\dn", "run r4n"))           # <_sre.SRE_Match object; span=(4, 7), match='r4n'>
# \D : any non-decimal digit
print(re.search(r"r\Dn", "run r4n"))           # <_sre.SRE_Match object; span=(0, 3), match='run'>
# \s : any white space [\t\n\r\f\v]
print(re.search(r"r\sn", "r\nn r4n"))          # <_sre.SRE_Match object; span=(0, 3), match='r\nn'>
# \S : opposite to \s, any non-white space
print(re.search(r"r\Sn", "r\nn r4n"))          # <_sre.SRE_Match object; span=(4, 7), match='r4n'>
# \w : [a-zA-Z0-9_]
print(re.search(r"r\wn", "r\nn r4n"))          # <_sre.SRE_Match object; span=(4, 7), match='r4n'>
# \W : opposite to \w
print(re.search(r"r\Wn", "r\nn r4n"))          # <_sre.SRE_Match object; span=(0, 3), match='r\nn'>
# \b : empty string (only at the start or end of the word)
print(re.search(r"\bruns\b", "dog runs to cat"))    # <_sre.SRE_Match object; span=(4, 8), match='runs'>
# \B : empty string (but not at the start or end of a word)
print(re.search(r"\B runs \B", "dog   runs  to cat"))  # <_sre.SRE_Match object; span=(8, 14), match=' runs '>
# \\ : match \
print(re.search(r"runs\\", "runs\ to me"))     # <_sre.SRE_Match object; span=(0, 5), match='runs\\'>
# . : match anything (except \n)
print(re.search(r"r.n", "r[ns to me"))         # <_sre.SRE_Match object; span=(0, 3), match='r[n'>
# ^ : match line beginning
print(re.search(r"^dog", "dog runs to cat"))   # <_sre.SRE_Match object; span=(0, 3), match='dog'>
# $ : match line ending
print(re.search(r"cat$", "dog runs to cat"))   # <_sre.SRE_Match object; span=(12, 15), match='cat'>
# ? : may or may not occur
print(re.search(r"Mon(day)?", "Monday"))       # <_sre.SRE_Match object; span=(0, 6), match='Monday'>
print(re.search(r"Mon(day)?", "Mon"))          # <_sre.SRE_Match object; span=(0, 3), match='Mon'>

</code></pre> 
 <p>如果一个字符串有很多行, 我们想使用 <code>^</code> 形式来匹配行开头的字符, 如果用通常的形式是不成功的. 比如下面的 “I” 出现在第二行开头, 但是使用 <code>r"^I"</code> 却匹配不到第二行, 这时候, 我们要使用 另外一个参数, 让 <code>re.search()</code> 可以对每一行单独处理. 这个参数就是 <code>flags=re.M</code>, 或者这样写也行 <code>flags=re.MULTILINE</code>.</p> 
 <p><ins data-ad-format="auto" class="adsbygoogle adsbygoogle-noablate" data-ad-client="ca-pub-4601203457616636" data-adsbygoogle-status="done" data-overlap-observer-io="false" style="display: block; margin: auto; background-color: transparent;"><ins id="aswift_8_expand" style="display: inline-table; border: none; height: 159px; margin: 0px; padding: 0px; position: relative; visibility: visible; width: 636px; background-color: transparent;"><ins id="aswift_8_anchor" style="display: block; border: none; height: 159px; margin: 0px; padding: 0px; position: relative; visibility: visible; width: 636px; background-color: transparent;"><iframe id="aswift_8" name="aswift_8" sandbox="allow-forms allow-pointer-lock allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-top-navigation-by-user-activation" width="636" height="159" frameborder="0" src="https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-4601203457616636&output=html&h=159&adk=1744626125&adf=2663990526&w=636&lmt=1583377291&num_ads=1&rafmt=16&sem=mc&pwprc=9194589492&psa=0&guci=2.2.0.0.2.2.0.0&ad_type=text_image&format=636x159&url=https%3A%2F%2Fmorvanzhou.github.io%2Ftutorials%2Fpython-basic%2Fbasic%2F13-10-regular-expression%2F&flash=0&pra=3&wgl=1&fa=27&adsid=NT&dt=1587802198495&bpp=2&bdt=897&idt=2&shv=r20200422&cbv=r20190131&ptt=9&saldr=aa&abxe=1&prev_fmts=700x90%2C250x250%2C636x159%2C636x159%2C300x250%2C0x0&nras=2&correlator=3466323590182&frm=20&pv=1&ga_vid=1212726724.1583946939&ga_sid=1587802198&ga_hid=1016610859&ga_fc=0&iag=0&icsg=9130715816&dssz=30&mdo=0&mso=0&u_tz=480&u_his=9&u_java=0&u_h=1080&u_w=1920&u_ah=1040&u_aw=1920&u_cd=24&u_nplug=3&u_nmime=4&adx=484&ady=4507&biw=1903&bih=937&scr_x=0&scr_y=0&eid=21065214&oid=3&pvsid=322963587975057&pem=821&ref=https%3A%2F%2Fmorvanzhou.github.io%2Ftutorials%2Fpython-basic%2Fbasic%2F&rx=0&eae=0&fc=384&brdim=0%2C0%2C0%2C0%2C1920%2C0%2C1920%2C1040%2C1920%2C937&vis=1&rsz=%7C%7Cs%7C&abl=NS&fu=8216&bc=31&ifi=8&uci=a!8&btvi=4&fsb=1&xpc=ZuJ21Wg7LZ&p=https%3A//morvanzhou.github.io&dtd=5" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true" data-google-container-id="a!8" data-google-query-id="CK31vpCQg-kCFcEgKgodDV0EoQ" data-load-complete="true" style="left: 0px; position: absolute; top: 0px; border: 0px; width: 636px; height: 159px;"></iframe></ins></ins></ins></p> 
 <pre><code>string = """
dog runs to cat.
I run to dog.
"""
print(re.search(r"^I", string))                 # None
print(re.search(r"^I", string, flags=re.M))     # <_sre.SRE_Match object; span=(18, 19), match='I'>

</code></pre> 
 <h2>重复匹配 </h2> 
 <p>如果我们想让某个规律被重复使用, 在正则里面也是可以实现的, 而且实现的方式还有很多. 具体可以分为这三种:</p> 
 <ul> 
  <li> <code>*</code> : 重复零次或多次</li> 
  <li> <code>+</code> : 重复一次或多次</li> 
  <li> <code>{n, m}</code> : 重复 n 至 m 次</li> 
  <li> <code>{n}</code> : 重复 n 次</li> 
 </ul> 
 <p>举例如下:</p> 
 <pre><code># * : occur 0 or more times
print(re.search(r"ab*", "a"))             # <_sre.SRE_Match object; span=(0, 1), match='a'>
print(re.search(r"ab*", "abbbbb"))        # <_sre.SRE_Match object; span=(0, 6), match='abbbbb'>

# + : occur 1 or more times
print(re.search(r"ab+", "a"))             # None
print(re.search(r"ab+", "abbbbb"))        # <_sre.SRE_Match object; span=(0, 6), match='abbbbb'>

# {n, m} : occur n to m times
print(re.search(r"ab{2,10}", "a"))        # None
print(re.search(r"ab{2,10}", "abbbbb"))   # <_sre.SRE_Match object; span=(0, 6), match='abbbbb'>

</code></pre> 
 <h2>分组 </h2> 
 <p>我们甚至可以为找到的内容分组, 使用 <code>()</code> 能轻松实现这件事. 通过分组, 我们能轻松定位所找到的内容. 比如在这个 <code>(\d+)</code> 组里, 需要找到的是一些数字, 在 <code>(.+)</code> 这个组里, 我们会找到 “Date: “ 后面的所有内容. 当使用 <code>match.group()</code> 时, 他会返回所有组里的内容, 而如果给 <code>.group(2)</code> 里加一个数, 它就能定位你需要返回哪个组里的信息.</p> 
 <pre><code>match = re.search(r"(\d+), Date: (.+)", "ID: 021523, Date: Feb/12/2017")
print(match.group())                   # 021523, Date: Feb/12/2017
print(match.group(1))                  # 021523
print(match.group(2))                  # Date: Feb/12/2017

</code></pre> 
 <p>有时候, 组会很多, 光用数字可能比较难找到自己想要的组, 这时候, 如果有一个名字当做索引, 会是一件很容易的事. 我们字需要在括号的开头写上这样的形式 <code>?P<名字></code> 就给这个组定义了一个名字. 然后就能用这个名字找到这个组的内容.</p> 
 <pre><code>match = re.search(r"(?P<id>\d+), Date: (?P<date>.+)", "ID: 021523, Date: Feb/12/2017")
print(match.group('id'))                # 021523
print(match.group('date'))              # Date: Feb/12/2017

</code></pre> 
 <p><ins class="adsbygoogle" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-4601203457616636" data-ad-slot="3397817325" data-adsbygoogle-status="done" data-overlap-observer-io="false" style="display: block; text-align: center; height: 123px; width: 636px;"><ins id="aswift_4_expand" style="display: inline-table; border: none; height: 123px; margin: 0px; padding: 0px; position: relative; visibility: visible; width: 636px; background-color: transparent;"><ins id="aswift_4_anchor" style="display: block; border: none; height: 123px; margin: 0px; padding: 0px; position: relative; visibility: visible; width: 636px; background-color: transparent; overflow: hidden;"><iframe id="aswift_4" name="aswift_4" sandbox="allow-forms allow-pointer-lock allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-top-navigation-by-user-activation" width="636" height="123" frameborder="0" src="https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-4601203457616636&output=html&h=159&slotname=3397817325&adk=3401585631&adf=2619620792&w=636&fwrn=4&lmt=1583377291&rafmt=11&psa=0&guci=2.2.0.0.2.2.0.0&format=636x159&url=https%3A%2F%2Fmorvanzhou.github.io%2Ftutorials%2Fpython-basic%2Fbasic%2F13-10-regular-expression%2F&flash=0&wgl=1&adsid=NT&dt=1587802197991&bpp=2&bdt=393&idt=131&shv=r20200422&cbv=r20190131&ptt=9&saldr=aa&abxe=1&prev_fmts=700x90%2C250x250%2C636x159%2C636x159%2C300x250%2C0x0%2C636x159&nras=2&correlator=3466323590182&frm=20&pv=1&ga_vid=1212726724.1583946939&ga_sid=1587802198&ga_hid=1016610859&ga_fc=0&iag=0&icsg=43490454184&dssz=33&mdo=0&mso=0&rplot=4&u_tz=480&u_his=9&u_java=0&u_h=1080&u_w=1920&u_ah=1040&u_aw=1920&u_cd=24&u_nplug=3&u_nmime=4&adx=484&ady=6053&biw=1903&bih=937&scr_x=0&scr_y=2305&eid=21065214&oid=3&psts=AKB7eCK4lOp292lEAVSqA7mQs41q8NeRpyYvav9UdXDUuHhp_SKIMiPoxfCs2yoHVOjnLQ%2CAKB7eCK4lOp292lEAVSqA7mQs41q8NeRpyYvav9UdXDUuHhp_SKIMiPoxfCs2yoHVOjnLQ%2CAKB7eCK4lOp292lEAVSqA7mQs41q8NeRpyYvav9UdXDUuHhp_SKIMiPoxfCs2yoHVOjnLQ%2CAKB7eCK4lOp292lEAVSqA7mQs41q8NeRpyYvav9UdXDUuHhp_SKIMiPoxfCs2yoHVOjnLQ%2CAKB7eCK4lOp292lEAVSqA7mQs41q8NeRpyYvav9UdXDUuHhp_SKIMiPoxfCs2yoHVOjnLQ%2CAKB7eCK4lOp292lEAVSqA7mQs41q8NeRpyYvav9UdXDUuHhp_SKIMiPoxfCs2yoHVOjnLQ%2CAKB7eCK4lOp292lEAVSqA7mQs41q8NeRpyYvav9UdXDUuHhp_SKIMiPoxfCs2yoHVOjnLQ&pvsid=322963587975057&pem=821&ref=https%3A%2F%2Fmorvanzhou.github.io%2Ftutorials%2Fpython-basic%2Fbasic%2F&rx=0&eae=0&fc=896&brdim=0%2C0%2C0%2C0%2C1920%2C0%2C1920%2C1040%2C1920%2C937&vis=1&rsz=%7C%7CeEbr%7C&abl=CS&pfx=0&fu=8344&bc=31&ifi=5&uci=a!5&btvi=5&fsb=1&xpc=6Rn7ABKl1J&p=https%3A//morvanzhou.github.io&dtd=M" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true" data-google-container-id="a!5" data-google-query-id="CK-2rcSQg-kCFYrXuwgdepIJ3w" data-load-complete="true" style="left: 0px; position: absolute; top: 0px; border: 0px; width: 636px; height: 123px;"></iframe></ins></ins></ins></p> 
 <h2>findall </h2> 
 <p>前面我们说的都是只找到了最开始匹配上的一项而已, 如果需要找到全部的匹配项, 我们可以使用 <code>findall</code> 功能. 然后返回一个列表. 注意下面还有一个新的知识点, <code>|</code> 是 or 的意思, 要不是前者要不是后者.</p> 
 <pre><code># findall
print(re.findall(r"r[ua]n", "run ran ren"))    # ['run', 'ran']

# | : or
print(re.findall(r"(run|ran)", "run ran ren")) # ['run', 'ran']

</code></pre> 
 <h2>replace </h2> 
 <p>我们还能通过正则表达式匹配上一些形式的字符串然后再替代掉这些字符串. 使用这种匹配 <code>re.sub()</code>, 将会比 python 自带的 <code>string.replace()</code> 要灵活多变.</p> 
 <pre><code>print(re.sub(r"r[au]ns", "catches", "dog runs to cat"))     # dog catches to cat

</code></pre> 
 <h2>split </h2> 
 <p>再来我们 Python 中有个字符串的分割功能, 比如想获取一句话中所有的单词. 比如 <code>"a is b".split(" ")</code>, 这样它就会产生一个列表来保存所有单词. 但是在正则中, 这种普通的分割也可以做的淋漓精致.</p> 
 <pre><code>print(re.split(r"[,;\.]", "a;b,c.d;e"))             # ['a', 'b', 'c', 'd', 'e']

</code></pre> 
 <h2>compile </h2> 
 <p>最后, 我们还能使用 compile 过后的正则, 来对这个正则重复使用. 先将正则 compile 进一个变量, 比如 <code>compiled_re</code>, 然后直接使用这个 <code>compiled_re</code> 来搜索.</p> 
 <pre><code>compiled_re = re.compile(r"r[ua]n")
print(compiled_re.search("dog ran to cat"))  # <_sre.SRE_Match object; span=(4, 7), match='ran'>
</code></pre> 
 <h2>小抄 </h2> 
 <p>为了大家方便记忆, 我很久以前在网上找到了一份小抄, 这个小抄的原出处应该是这里. 小抄很有用, 不记得的时候回头方便看.</p> 
 <p><br> </p> 
 <div class="image-package"> 
  <div class="image-container" style="max-width: 700px; max-height: 1507px;"> 
   <div class="image-view">  
   </div> 
  </div> 
  <div class="image-caption">
    RegEx.png 
  </div> 
 </div> 
 <p></p> 
</article>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1717483953822183424"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js"></script>
                    <!-- 文章页-底部 动态广告位 -->
                    <div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
                </div>
                <div class="col-md-3">
                    <div class="row" id="ad">
                        <!-- 文章页-右侧1 动态广告位 -->
                        <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_1"> </div>
                        </div>
                        <!-- 文章页-右侧2 动态广告位 -->
                        <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_2"></div>
                        </div>
                        <!-- 文章页-右侧3 动态广告位 -->
                        <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_3"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="container">
        <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(RegEx正则表达)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1835506236842405888.htm"
                           title="C#中使用split分割字符串" target="_blank">C#中使用split分割字符串</a>
                        <span class="text-muted">互联网打工人no1</span>
<a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a>
                        <div>1、用字符串分隔:usingSystem.Text.RegularExpressions;stringstr="aaajsbbbjsccc";string[]sArray=Regex.Split(str,"js",RegexOptions.IgnoreCase);foreach(stringiinsArray)Response.Write(i.ToString()+"");输出结果:aaabbbc</div>
                    </li>
                    <li><a href="/article/1835399831535841280.htm"
                           title="python实现规则引擎_规则引擎python" target="_blank">python实现规则引擎_规则引擎python</a>
                        <span class="text-muted">weixin_39601511</span>
<a class="tag" taget="_blank" href="/search/python%E5%AE%9E%E7%8E%B0%E8%A7%84%E5%88%99%E5%BC%95%E6%93%8E/1.htm">python实现规则引擎</a>
                        <div>广告关闭回望2020,你在技术之路上,有什么收获和成长么?对于未来,你有什么期待么?云+社区年度征文,各种定制好礼等你!我正在用python编写日志收集分析应用程序,我需要编写一个“规则引擎”来匹配和处理日志消息。它需要具有以下特点:正则表达式匹配消息本身消息严重性优先级的算术比较布尔运算符我设想一个例子规则可能是这样的:(message~program:messageandseverity>=h</div>
                    </li>
                    <li><a href="/article/1835392896531001344.htm"
                           title="Regular Expression 正则表达式" target="_blank">Regular Expression 正则表达式</a>
                        <span class="text-muted">Aimyon_36</span>
<a class="tag" taget="_blank" href="/search/Data/1.htm">Data</a><a class="tag" taget="_blank" href="/search/Development/1.htm">Development</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a><a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>RegularExpression前言1.基本匹配2.元字符2.1点运算符.2.2字符集2.2.1否定字符集2.3重复次数2.3.1*号2.3.2+号2.3.3?号2.4{}号2.5(...)特征标群2.6|或运算符2.7转码特殊字符2.8锚点2.8.1^号2.8.2$号3.简写字符集4.零宽度断言(前后预查)4.1?=...正先行断言4.2?!...负先行断言4.3?Thefatcatsaton</div>
                    </li>
                    <li><a href="/article/1835359727924637696.htm"
                           title="Nginx从入门到实践(三)" target="_blank">Nginx从入门到实践(三)</a>
                        <span class="text-muted">听你讲故事啊</span>

                        <div>动静分离动静分离是将网站静态资源(JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。动静分离的一种做法是将静态资源部署在nginx上,后台项目部署到应用服务器上,根据一定规则静态资源的请求全部请求nginx服务器,达到动静分离的目标。rewrite规则Rewrite规则常见正则表达式Rewrite主要的功能就是实现URL的重写,Ngin</div>
                    </li>
                    <li><a href="/article/1835333268375957504.htm"
                           title="爬虫技术抓取网站数据" target="_blank">爬虫技术抓取网站数据</a>
                        <span class="text-muted">Bearjumpingcandy</span>
<a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a>
                        <div>爬虫技术是一种自动化获取网站数据的技术,它可以模拟人类浏览器的行为,访问网页并提取所需的信息。以下是爬虫技术抓取网站数据的一般步骤:发起HTTP请求:爬虫首先会发送HTTP请求到目标网站,获取网页的内容。解析HTML:获取到网页内容后,爬虫会使用HTML解析器解析HTML代码,提取出需要的数据。数据提取:通过使用XPath、CSS选择器或正则表达式等工具,爬虫可以从HTML中提取出所需的数据,如文</div>
                    </li>
                    <li><a href="/article/1835129584400560128.htm"
                           title="互联网 Java 工程师面试题(Java 面试题四)" target="_blank">互联网 Java 工程师面试题(Java 面试题四)</a>
                        <span class="text-muted">苹果酱0567</span>
<a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95%E9%A2%98%E6%B1%87%E6%80%BB%E4%B8%8E%E8%A7%A3%E6%9E%90/1.htm">面试题汇总与解析</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E4%B8%AD%E9%97%B4%E4%BB%B6/1.htm">中间件</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a>
                        <div>下面列出这份Java面试问题列表包含的主题多线程,并发及线程基础数据类型转换的基本原则垃圾回收(GC)Java集合框架数组字符串GOF设计模式SOLID抽象类与接口Java基础,如equals和hashcode泛型与枚举JavaIO与NIO常用网络协议Java中的数据结构和算法正则表达式JVM底层Java最佳实JDBCDate,Time与CalendarJava处理XMLJUnit编程现在是时候给</div>
                    </li>
                    <li><a href="/article/1835128954600648704.htm"
                           title="【无标题】正则表达式笔记" target="_blank">【无标题】正则表达式笔记</a>
                        <span class="text-muted">qis_qis</span>
<a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                        <div>作用查找特殊规则的字符串编写一个正则表达式,用来查找所有以0开头,后面跟着2-3个数字,然后是一个连字号“-”,最后是7或8位数字的字符串(像010-12345678或0376-7654321)。0\d{2,3}-\d{7,8}基本匹配区分大小写cat会匹配"cat"CAt会匹配"CAt"元字符元字符是正则表达式的基本组成元素。元字符在这里跟它通常表达的意思不一样,而是以某种特殊的含义去解释。有些</div>
                    </li>
                    <li><a href="/article/1835005152646492160.htm"
                           title="python学习第七节:正则表达式" target="_blank">python学习第七节:正则表达式</a>
                        <span class="text-muted">一只会敲代码的小灰灰</span>
<a class="tag" taget="_blank" href="/search/python%E5%AD%A6%E4%B9%A0/1.htm">python学习</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a>
                        <div>python学习第七节:正则表达式正则表达式基本上在所有开发语言中都会使用到,在python中尤为重要。当我们使用python开发爬虫程序将目标网页扒下来之后我们要从网页中解析出我们想要的信息,这个时候就需要正则表达式去进行匹配。importrere的常量re模块中有9个常量,常量的值都是int类型!(知道就行)修饰符描述re.l使匹配对大小写不敏感re.L做本地化识别(locale-aware)</div>
                    </li>
                    <li><a href="/article/1834879959437504512.htm"
                           title="ansible_find模块" target="_blank">ansible_find模块</a>
                        <span class="text-muted">打败404</span>
<a class="tag" taget="_blank" href="/search/ansible/1.htm">ansible</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>found_files:changed:falsefiles:-path:/etc/yum.repos.d/example1.repomode:'0644'size:1542-path:/etc/yum.repos.d/example2.repomode:'0644'size:2842matched:21.find模块返回的格式2.在后面调用的时候按照相应的key取对应的value3.支持正则表达</div>
                    </li>
                    <li><a href="/article/1834800668481777664.htm"
                           title="Linux三剑客之grep命令详解" target="_blank">Linux三剑客之grep命令详解</a>
                        <span class="text-muted">promise524</span>
<a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/shell/1.htm">shell</a><a class="tag" taget="_blank" href="/search/bash/1.htm">bash</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>grep是Linux中最常用的文本搜索工具,用于在文件或文本输出中查找与指定模式匹配的行。它支持基本正则表达式、扩展正则表达式、多文件搜索、递归搜索等多种功能,非常适合过滤、搜索和提取文本内容。1.grep的基本语法grep[选项]模式[文件...]模式:搜索的文本模式,可以是普通字符串或正则表达式。[文件...]:要搜索的文件。如果没有指定文件,grep会从标准输入中读取数据。2.常用选项-i:</div>
                    </li>
                    <li><a href="/article/1834715820186497024.htm"
                           title="java读取csv文件" target="_blank">java读取csv文件</a>
                        <span class="text-muted">c++代码诗人</span>
<a class="tag" taget="_blank" href="/search/java%E4%B8%8Enet/1.htm">java与net</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>importjava.io.BufferedReader;importjava.io.FileInputStream;importjava.io.IOException;importjava.io.InputStreamReader;importjava.util.ArrayList;importjava.util.List;importjava.util.regex.Matcher;import</div>
                    </li>
                    <li><a href="/article/1834684045783560192.htm"
                           title="Linux三剑客与管道使用" target="_blank">Linux三剑客与管道使用</a>
                        <span class="text-muted">许琳珊</span>

                        <div>一、管道1、什么是管道linux提供管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入2、例子echo"hello123"|grep"hello"二、正则1、什么是正则正则表达式就是记录文本规则的代码2、正则的用法常用元字符代码说明.匹配除换行符以外的任意字符\w匹配字母或数字或下划线或汉字\s匹配任意的空白符\d匹配数字\b匹配单词的开始或结束^匹配字符串的开始$匹配字</div>
                    </li>
                    <li><a href="/article/1834620652624113664.htm"
                           title="Java 正则表达式详解" target="_blank">Java 正则表达式详解</a>
                        <span class="text-muted">艾伦~耶格尔</span>
<a class="tag" taget="_blank" href="/search/Java%E5%88%9D%E7%BA%A7/1.htm">Java初级</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a>
                        <div>正则表达式(RegularExpression,简称regex)是一种强大的文本处理工具,可以用来匹配、搜索和替换文本中的特定模式。在Java中,正则表达式由java.util.regex包提供支持。1.理解正则表达式语法正则表达式使用特殊的字符和符号来定义匹配模式。一些常用的元字符如下:.:匹配任意单个字符*:匹配前面的字符零次或多次+:匹配前面的字符一次或多次?:匹配前面的字符零次或一次[]:</div>
                    </li>
                    <li><a href="/article/1834545036784660480.htm"
                           title="Linux三剑客-sed" target="_blank">Linux三剑客-sed</a>
                        <span class="text-muted">krb___</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>前言:sed是StreamEditor(字符流)的缩写,简称流编辑器。sed是操作、过滤和转换问吧内容的强大工具。sed是一次读取一行数据常用功能包括结合正则表达式对文件实现快速增删改查,其中查询的功能中最常用的两大功能是过滤(过滤指定字符串),取行(取出指定行)sed命令语法:sed[选项][sed内置命令字符][输入文件]选项参数解释-n取消默认sed的输出,常与sed内置命令p一起使用-i直</div>
                    </li>
                    <li><a href="/article/1834462469813268480.htm"
                           title="Python基础知识进阶之正则表达式_头歌python正则表达式进阶" target="_blank">Python基础知识进阶之正则表达式_头歌python正则表达式进阶</a>
                        <span class="text-muted">前端陈萨龙</span>
<a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a>
                        <div>最后硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是</div>
                    </li>
                    <li><a href="/article/1834429709887303680.htm"
                           title="Java中的数组和字符串" target="_blank">Java中的数组和字符串</a>
                        <span class="text-muted">RenX000</span>
<a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/SE/1.htm">SE</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>文章目录数组一维数组创立默认值转型多维数组可变长参数基本格式应用字符串String类StringBuilder类裁剪正则表达式检测数组数组类型本身也是类,即使是基本类型的数组也是以对象形式存在的,并不是基本数据类型一维数组int[]array=newint[10];//创建数组时需要指定长度创立类型[]变量名称=new类型[数组大小];类型变量名称[]=new类型[数组大小];//支持C语言样式,</div>
                    </li>
                    <li><a href="/article/1834247285219880960.htm"
                           title="Linux如何使用sed命令进行文本替换" target="_blank">Linux如何使用sed命令进行文本替换</a>
                        <span class="text-muted">yang295242361</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>在Linux中,sed(StreamEditor)是一个用于处理文本流的命令行工具,它非常适合用于执行基本的文本转换。sed可以读取输入的文本文件,根据指定的指令对文本进行处理,并将结果输出到标准输出设备。以下是如何使用sed命令进行文本替换的详细说明:1.基本语法sed命令的基本语法如下:sed's/regexp/replacement/flags'fileregexp:正则表达式,用于匹配要替</div>
                    </li>
                    <li><a href="/article/1833992430127509504.htm"
                           title="Linux 运维三剑客:grep、sed 和 awk 实战案例与命令参数详解" target="_blank">Linux 运维三剑客:grep、sed 和 awk 实战案例与命令参数详解</a>
                        <span class="text-muted">Lyle_Tu</span>
<a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97%E8%BF%90%E7%BB%B4/1.htm">云计算运维</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/chrome/1.htm">chrome</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97/1.htm">云计算</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>在Linux运维中,grep、sed和awk是三个非常强大的文本处理工具,它们在处理文本数据时发挥着重要作用。本文将通过一些实战案例,展示这三个工具的使用方法和强大功能,并对它们的命令参数进行详解。grep:文本搜索利器grep是一个强大的文本搜索工具,它使用正则表达式来匹配文本模式。以下是grep的一些常用命令参数:-i:忽略大小写进行匹配。-v:反向查找,只打印不匹配的行。-n:显示匹配行的行</div>
                    </li>
                    <li><a href="/article/1833947036517494784.htm"
                           title="微信小程序搜索关键字变红" target="_blank">微信小程序搜索关键字变红</a>
                        <span class="text-muted">get200</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>index.js//获取应用实例constapp=getApp();constgetInf=(str,key)=>str.replace(newRegExp(${key},‘g’),%%${key}%%).split(’%%’);Page({data:{keyName:null,listData:[{“id”:“1”,“fund_id”:“150084”,“fund_name”:“广发深证100指</div>
                    </li>
                    <li><a href="/article/1833944197728661504.htm"
                           title="python核心编程课后习题答案--第一章" target="_blank">python核心编程课后习题答案--第一章</a>
                        <span class="text-muted">NewForMe</span>

                        <div>正则表达式1-1[bh][aiu]t;1-2\w+\w+;1-3\w+,\s\w+;1-4[A-Za-z_]+[\w_]+python有效标识符的定义:1.python中的标识符是区分大小写的。2.标示符以字母或下划线开头,可包括字母,下划线和数字。3.以下划线开头的标识符是有特殊意义的。1-5\d+(\s\w+)+1-6(1)^w{3}://.+com/?$(2)^\w+://.+?\.\w{3</div>
                    </li>
                    <li><a href="/article/1833725811115520000.htm"
                           title="Java 正则表达式" target="_blank">Java 正则表达式</a>
                        <span class="text-muted">南风_001</span>

                        <div>正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑或处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。正则表达式实例一个字符串其实就是一个简单的正则表达式,例如HelloWorld正则表达式匹配"HelloWorld"字符串。.(点号)也是一个正则表达式,它匹配任何一个字符如:"a"或"1"。下表列出了一些正则表达式的实例及描述:正则表达式描述thisistext匹配</div>
                    </li>
                    <li><a href="/article/1833661088093270016.htm"
                           title="Linux shell sed 命令详解" target="_blank">Linux shell sed 命令详解</a>
                        <span class="text-muted">BugBear1989</span>

                        <div>详细的sed命令详解,请参考https://my.oschina.net/u/3908182/blog/1921761一、sed命令工作机制:每次读取一行文本至“模式空间(patternspace)”中,在模式空间中完成处理;将处理结果输出至标准输出设备;语法:sed[OPTION]...{script}[input-file]...参数说明-r支持扩展正则表达式-n静默模式-escript1-e</div>
                    </li>
                    <li><a href="/article/1833623023924637696.htm"
                           title="用正则表达式过滤logcat中的多个tag的日志" target="_blank">用正则表达式过滤logcat中的多个tag的日志</a>
                        <span class="text-muted">fc82bb084ee7</span>

                        <div>在AndroidStudio中,在过滤器的byLogTag选项中配置.我配置了2个tagfilter方便开发,1.multi-tag-filter2.ignore-multi-tag-filter.过滤出指定tag的日志信息^(?:Watchdog|InputReader|ahking)Watchdog忽略指定tag的日志信息^(?!WifiMonitor|WifiHW)有些tag的无用log非常</div>
                    </li>
                    <li><a href="/article/1833566150668152832.htm"
                           title="Python实现对哈利波特小说单词统计" target="_blank">Python实现对哈利波特小说单词统计</a>
                        <span class="text-muted">胜天半月子</span>
<a class="tag" taget="_blank" href="/search/Python%E5%9F%BA%E7%A1%80%E5%8F%8A%E5%BA%94%E7%94%A8/1.htm">Python基础及应用</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%AD%97%E7%AC%A6%E4%B8%B2/1.htm">字符串</a><a class="tag" taget="_blank" href="/search/%E5%88%97%E8%A1%A8/1.htm">列表</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a>
                        <div>文章目录要求一、打开文件正则表达式spilt()函数实例二、词频统计三、单词排序四、输出或写入文件python文件写入要求对HarryPotter5.txt英文小说进行词频统计,统计出前二十个频率最高的单词,并打印输出或写入文件一、打开文件打开文件并将单词中非单词字符用空格代替代码:#读取小说内容fp=open('HarryPotter5.txt')content=fp.read()#所有标点符号</div>
                    </li>
                    <li><a href="/article/1833420650069454848.htm"
                           title="javase笔记3----正则表达式" target="_blank">javase笔记3----正则表达式</a>
                        <span class="text-muted">芝奥小婷</span>
<a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                        <div>正则表达式简介正则表达式(RegularExpressions),是一个特殊的字符串,可以对普通的字符串进行校验检测等工作,校验一个字符串是否满足预设的规则。基本语法字符集合[]:表示匹配括号里的任意一个字符。[abc]:匹配a或者b或者c[^abc]:匹配任意一个字符,只要不是a,或b,或c就表示匹配成功[a-z]:表示匹配所有的小写字母的任意一个。[A-Za-z]:表示匹配所有的小写字母和大写</div>
                    </li>
                    <li><a href="/article/1833420522726191104.htm"
                           title="搜索结果关键字标红 — 正则" target="_blank">搜索结果关键字标红 — 正则</a>
                        <span class="text-muted">月亮消失了.974</span>
<a class="tag" taget="_blank" href="/search/servlet/1.htm">servlet</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a>
                        <div>str是你的内容,key是关键字正则表达式匹配模式支持的三个标志(newregexp的第二个参数)g:global全文搜索,不添加则搜索到第一个匹配停止;i:ignorecase忽略大小写,默认大小写敏感;m:multiplelines多行搜索highlight(str,key){            varreg=newRegExp(`(${key})`,'gi');            v</div>
                    </li>
                    <li><a href="/article/1833419514369372160.htm"
                           title="正则表达式语法、运算符优先级" target="_blank">正则表达式语法、运算符优先级</a>
                        <span class="text-muted">weixin_54668000</span>
<a class="tag" taget="_blank" href="/search/mvc/1.htm">mvc</a>
                        <div>正则表达式(regularexpression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。例如:runoo+b,可以匹配runoob、runooob、runoooooob</div>
                    </li>
                    <li><a href="/article/1833417497085308928.htm"
                           title="vue 搜索关键字,关键字标红" target="_blank">vue 搜索关键字,关键字标红</a>
                        <span class="text-muted">Feng、锋</span>
<a class="tag" taget="_blank" href="/search/vue/1.htm">vue</a><a class="tag" taget="_blank" href="/search/js/1.htm">js</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a>
                        <div>vue使用v-htmlthis.voice_result.map(e=>{if(this.red_text){//匹配关键字正则letreplaceReg=newRegExp(this.red_text,'g');//高亮替换v-html值letreplaceString=''+this.red_text+'';//开始替换e.info=e.info.replace(replaceReg,repl</div>
                    </li>
                    <li><a href="/article/1833400605431918592.htm"
                           title="shell脚本——正则表达式" target="_blank">shell脚本——正则表达式</a>
                        <span class="text-muted">诚诚k</span>
<a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a>
                        <div>概述正则表达式是你所定义的模式模板,Linux工具可以用它来过滤文本。Linux工具(比如sed编辑器或gawk程序)能够在处理数据时使用正则表达式对数据进行模式匹配。如果数据匹配模式,它就会被接受并进一步处理;如果数据不匹配模式,它就会被滤掉。数据流--正则表达式---(1)匹配的数据(2)滤掉的数据正则表达式(或称RegularExpression,简称RE),是用于描述字符排列和匹配模式的一</div>
                    </li>
                    <li><a href="/article/1833399218337837056.htm"
                           title="正则表达式-运算符优先级" target="_blank">正则表达式-运算符优先级</a>
                        <span class="text-muted">一只小棉花</span>
<a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F-%E4%BC%98%E5%85%88%E7%BA%A7/1.htm">正则表达式-优先级</a>
                        <div>转自:http://www.runoob.com/regexp/regexp-operator.html</div>
                    </li>
                                <li><a href="/article/7.htm"
                                       title="LeetCode[位运算] - #137 Single Number II" target="_blank">LeetCode[位运算] - #137 Single Number II</a>
                                    <span class="text-muted">Cwind</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/Algorithm/1.htm">Algorithm</a><a class="tag" taget="_blank" href="/search/LeetCode/1.htm">LeetCode</a><a class="tag" taget="_blank" href="/search/%E9%A2%98%E8%A7%A3/1.htm">题解</a><a class="tag" taget="_blank" href="/search/%E4%BD%8D%E8%BF%90%E7%AE%97/1.htm">位运算</a>
                                    <div>原题链接:#137 Single Number II  
要求: 
给定一个整型数组,其中除了一个元素之外,每个元素都出现三次。找出这个元素 
注意:算法的时间复杂度应为O(n),最好不使用额外的内存空间 
  
难度:中等 
  
分析: 
与#136类似,都是考察位运算。不过出现两次的可以使用异或运算的特性 n XOR n = 0, n XOR 0 = n,即某一</div>
                                </li>
                                <li><a href="/article/134.htm"
                                       title="《JavaScript语言精粹》笔记" target="_blank">《JavaScript语言精粹》笔记</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a>
                                    <div>0、JavaScript的简单数据类型包括数字、字符创、布尔值(true/false)、null和undefined值,其它值都是对象。 
1、JavaScript只有一个数字类型,它在内部被表示为64位的浮点数。没有分离出整数,所以1和1.0的值相同。 
2、NaN是一个数值,表示一个不能产生正常结果的运算结果。NaN不等于任何值,包括它本身。可以用函数isNaN(number)检测NaN,但是</div>
                                </li>
                                <li><a href="/article/261.htm"
                                       title="你应该更新的Java知识之常用程序库" target="_blank">你应该更新的Java知识之常用程序库</a>
                                    <span class="text-muted">Kai_Ge</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>在很多人眼中,Java 已经是一门垂垂老矣的语言,但并不妨碍 Java 世界依然在前进。如果你曾离开 Java,云游于其它世界,或是每日只在遗留代码中挣扎,或许是时候抬起头,看看老 Java 中的新东西。 
Guava 
Guava[gwɑ:və],一句话,只要你做Java项目,就应该用Guava(Github)。 
guava 是 Google 出品的一套 Java 核心库,在我看来,它甚至应该</div>
                                </li>
                                <li><a href="/article/388.htm"
                                       title="HttpClient" target="_blank">HttpClient</a>
                                    <span class="text-muted">120153216</span>
<a class="tag" taget="_blank" href="/search/httpclient/1.htm">httpclient</a>
                                    <div>/**
 * 可以传对象的请求转发,对象已流形式放入HTTP中
 */
public static Object doPost(Map<String,Object> parmMap,String url)
	{
		Object object = null;
		HttpClient hc = new HttpClient();
		
		String fullURL </div>
                                </li>
                                <li><a href="/article/515.htm"
                                       title="Django model字段类型清单" target="_blank">Django model字段类型清单</a>
                                    <span class="text-muted">2002wmj</span>
<a class="tag" taget="_blank" href="/search/django/1.htm">django</a>
                                    <div>Django 通过 models 实现数据库的创建、修改、删除等操作,本文为模型中一般常用的类型的清单,便于查询和使用: AutoField:一个自动递增的整型字段,添加记录时它会自动增长。你通常不需要直接使用这个字段;如果你不指定主键的话,系统会自动添加一个主键字段到你的model。(参阅自动主键字段)  BooleanField:布尔字段,管理工具里会自动将其描述为checkbox。  Cha</div>
                                </li>
                                <li><a href="/article/642.htm"
                                       title="在SQLSERVER中查找消耗CPU最多的SQL" target="_blank">在SQLSERVER中查找消耗CPU最多的SQL</a>
                                    <span class="text-muted">357029540</span>
<a class="tag" taget="_blank" href="/search/SQL+Server/1.htm">SQL Server</a>
                                    <div>返回消耗CPU数目最多的10条语句 
 
SELECT TOP 10 
   total_worker_time/execution_count AS avg_cpu_cost, plan_handle, 
   execution_count, 
   (SELECT SUBSTRING(text, statement_start_of</div>
                                </li>
                                <li><a href="/article/769.htm"
                                       title="Myeclipse项目无法部署,Undefined exploded archive location" target="_blank">Myeclipse项目无法部署,Undefined exploded archive location</a>
                                    <span class="text-muted">7454103</span>
<a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/MyEclipse/1.htm">MyEclipse</a>
                                    <div>做个备忘! 
 
错误信息为: 
      Undefined exploded archive location 
 
 
原因: 
          在工程转移过程中,导致工程的配置文件出错; 
 
 
解决方法: 
   </div>
                                </li>
                                <li><a href="/article/896.htm"
                                       title="GMT时间格式转换" target="_blank">GMT时间格式转换</a>
                                    <span class="text-muted">adminjun</span>
<a class="tag" taget="_blank" href="/search/GMT/1.htm">GMT</a><a class="tag" taget="_blank" href="/search/%E6%97%B6%E9%97%B4%E8%BD%AC%E6%8D%A2/1.htm">时间转换</a>
                                    <div>普通的时间转换问题我这里就不再罗嗦了,我想大家应该都会那种低级的转换问题吧,现在我向大家总结一下如何转换GMT时间格式,这种格式的转换方法网上还不是很多,所以有必要总结一下,也算给有需要的朋友一个小小的帮助啦。 
1、可以使用 
SimpleDateFormat SimpleDateFormat    
EEE-三位星期 
d-天 
MMM-月 
yyyy-四位年 
</div>
                                </li>
                                <li><a href="/article/1023.htm"
                                       title="Oracle数据库新装连接串问题" target="_blank">Oracle数据库新装连接串问题</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/oracle%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">oracle数据库</a>
                                    <div>割接新装了数据库,客户端登陆无问题,apache/cgi-bin程序有问题,sqlnet.log日志如下: 
Fatal NI connect error 12170. 
  VERSION INFORMATION:         TNS for Linux: Version 10.2.0.4.0 - Product</div>
                                </li>
                                <li><a href="/article/1150.htm"
                                       title="回顾java数组复制" target="_blank">回顾java数组复制</a>
                                    <span class="text-muted">ayaoxinchao</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E7%BB%84/1.htm">数组</a>
                                    <div>在写这篇文章之前,也看了一些别人写的,基本上都是大同小异。文章是对java数组复制基础知识的回顾,算是作为学习笔记,供以后自己翻阅。首先,简单想一下这个问题:为什么要复制数组?我的个人理解:在我们在利用一个数组时,在每一次使用,我们都希望它的值是初始值。这时我们就要对数组进行复制,以达到原始数组值的安全性。java数组复制大致分为3种方式:①for循环方式 ②clone方式 ③arrayCopy方</div>
                                </li>
                                <li><a href="/article/1277.htm"
                                       title="java web会话监听并使用spring注入" target="_blank">java web会话监听并使用spring注入</a>
                                    <span class="text-muted">bewithme</span>
<a class="tag" taget="_blank" href="/search/Java+Web/1.htm">Java Web</a>
                                    <div>  
      在java web应用中,当你想在建立会话或移除会话时,让系统做某些事情,比如说,统计在线用户,每当有用户登录时,或退出时,那么可以用下面这个监听器来监听。 
       
import java.util.ArrayList;
import java.ut</div>
                                </li>
                                <li><a href="/article/1404.htm"
                                       title="NoSQL数据库之Redis数据库管理(Redis的常用命令及高级应用)" target="_blank">NoSQL数据库之Redis数据库管理(Redis的常用命令及高级应用)</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/NoSQL/1.htm">NoSQL</a>
                                    <div>一 .Redis常用命令 
        Redis提供了丰富的命令对数据库和各种数据库类型进行操作,这些命令可以在Linux终端使用。 
        a.键值相关命令 
        b.服务器相关命令 
1.键值相关命令 
      &</div>
                                </li>
                                <li><a href="/article/1531.htm"
                                       title="java枚举序列化问题" target="_blank">java枚举序列化问题</a>
                                    <span class="text-muted">bingyingao</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%9E%9A%E4%B8%BE/1.htm">枚举</a><a class="tag" taget="_blank" href="/search/%E5%BA%8F%E5%88%97%E5%8C%96/1.htm">序列化</a>
                                    <div>对象在网络中传输离不开序列化和反序列化。而如果序列化的对象中有枚举值就要特别注意一些发布兼容问题: 
 
 
1.加一个枚举值 
新机器代码读分布式缓存中老对象,没有问题,不会抛异常。 
 
老机器代码读分布式缓存中新对像,反序列化会中断,所以在所有机器发布完成之前要避免出现新对象,或者提前让老机器拥有新增枚举的jar。 
 
 
 
  2.删一个枚举值 
新机器代码读分布式缓存中老对象,反序列</div>
                                </li>
                                <li><a href="/article/1658.htm"
                                       title="【Spark七十八】Spark Kyro序列化" target="_blank">【Spark七十八】Spark Kyro序列化</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/spark/1.htm">spark</a>
                                    <div>当使用SparkContext的saveAsObjectFile方法将对象序列化到文件,以及通过objectFile方法将对象从文件反序列出来的时候,Spark默认使用Java的序列化以及反序列化机制,通常情况下,这种序列化机制是很低效的,Spark支持使用Kyro作为对象的序列化和反序列化机制,序列化的速度比java更快,但是使用Kyro时要注意,Kyro目前还是有些bug。 
 
 Spark</div>
                                </li>
                                <li><a href="/article/1785.htm"
                                       title="Hybridizing OO and Functional Design" target="_blank">Hybridizing OO and Functional Design</a>
                                    <span class="text-muted">bookjovi</span>
<a class="tag" taget="_blank" href="/search/erlang/1.htm">erlang</a><a class="tag" taget="_blank" href="/search/haskell/1.htm">haskell</a>
                                    <div>  推荐博文:
Tell Above, and Ask Below - Hybridizing OO and Functional Design  
文章中把OO和FP讲的深入透彻,里面把smalltalk和haskell作为典型的两种编程范式代表语言,此点本人极为同意,smalltalk可以说是最能体现OO设计的面向对象语言,smalltalk的作者Alan kay也是OO的最早先驱,</div>
                                </li>
                                <li><a href="/article/1912.htm"
                                       title="Java-Collections Framework学习与总结-HashMap" target="_blank">Java-Collections Framework学习与总结-HashMap</a>
                                    <span class="text-muted">BrokenDreams</span>
<a class="tag" taget="_blank" href="/search/Collections/1.htm">Collections</a>
                                    <div>        开发中常常会用到这样一种数据结构,根据一个关键字,找到所需的信息。这个过程有点像查字典,拿到一个key,去字典表中查找对应的value。Java1.0版本提供了这样的类java.util.Dictionary(抽象类),基本上支持字典表的操作。后来引入了Map接口,更好的描述的这种数据结构。 
 &nb</div>
                                </li>
                                <li><a href="/article/2039.htm"
                                       title="读《研磨设计模式》-代码笔记-职责链模式-Chain Of Responsibility" target="_blank">读《研磨设计模式》-代码笔记-职责链模式-Chain Of Responsibility</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a>
                                    <div>声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/ 
 
 
 
 




/**
 * 业务逻辑:项目经理只能处理500以下的费用申请,部门经理是1000,总经理不设限。简单起见,只同意“Tom”的申请
 * bylijinnan
 */
abstract class Handler {
	/* </div>
                                </li>
                                <li><a href="/article/2166.htm"
                                       title="Android中启动外部程序" target="_blank">Android中启动外部程序</a>
                                    <span class="text-muted">cherishLC</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                                    <div>1、启动外部程序 
引用自: 
http://blog.csdn.net/linxcool/article/details/7692374 
 
//方法一
Intent intent=new Intent();
//包名 包名+类名(全路径)
intent.setClassName("com.linxcool", "com.linxcool.PlaneActi</div>
                                </li>
                                <li><a href="/article/2293.htm"
                                       title="summary_keep_rate" target="_blank">summary_keep_rate</a>
                                    <span class="text-muted">coollyj</span>
<a class="tag" taget="_blank" href="/search/SUM/1.htm">SUM</a>
                                    <div>
BEGIN  
      /*DECLARE  minDate varchar(20) ;
      DECLARE  maxDate varchar(20) ;*/
      DECLARE  stkDate varchar(20) ;

      DECLARE done int default -1; 
			/* 游标中 注册服务器地址 */  
      DE</div>
                                </li>
                                <li><a href="/article/2420.htm"
                                       title="hadoop hdfs 添加数据目录出错" target="_blank">hadoop hdfs 添加数据目录出错</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a><a class="tag" taget="_blank" href="/search/hdfs/1.htm">hdfs</a><a class="tag" taget="_blank" href="/search/%E6%89%A9%E5%AE%B9/1.htm">扩容</a>
                                    <div>由于原来配置的hadoop data目录快要用满了,故准备修改配置文件增加数据目录,以便扩容,但由于疏忽,把core-site.xml, hdfs-site.xml配置文件dfs.datanode.data.dir 配置项增加了配置目录,但未创建实际目录,重启datanode服务时,报如下错误: 
 
2014-11-18 08:51:39,128 WARN org.apache.hadoop.h</div>
                                </li>
                                <li><a href="/article/2547.htm"
                                       title="grep 目录级联查找" target="_blank">grep 目录级联查找</a>
                                    <span class="text-muted">dongwei_6688</span>
<a class="tag" taget="_blank" href="/search/grep/1.htm">grep</a>
                                    <div>       在Mac或者Linux下使用grep进行文件内容查找时,如果给定的目标搜索路径是当前目录,那么它默认只搜索当前目录下的文件,而不会搜索其下面子目录中的文件内容,如果想级联搜索下级目录,需要使用一个“-r”参数: 
grep -n -r "GET" . 
  
上面的命令将会找出当前目录“.”及当前目录中所有下级目录</div>
                                </li>
                                <li><a href="/article/2674.htm"
                                       title="yii 修改模块使用的布局文件" target="_blank">yii 修改模块使用的布局文件</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/yii/1.htm">yii</a><a class="tag" taget="_blank" href="/search/layouts/1.htm">layouts</a>
                                    <div>方法一:yii模块默认使用系统当前的主题布局文件,如果在主配置文件中配置了主题比如:  'theme'=>'mythm',   那么yii的模块就使用 protected/themes/mythm/views/layouts 下的布局文件;   如果未配置主题,那么 yii的模块就使用  protected/views/layouts 下的布局文件, 总之默认不是使用自身目录 pr</div>
                                </li>
                                <li><a href="/article/2801.htm"
                                       title="设计模式之单例模式" target="_blank">设计模式之单例模式</a>
                                    <span class="text-muted">come_for_dream</span>
<a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BE%8B%E6%A8%A1%E5%BC%8F/1.htm">单例模式</a><a class="tag" taget="_blank" href="/search/%E6%87%92%E6%B1%89%E5%BC%8F%E9%A5%BF%E6%B1%89%E5%BC%8F/1.htm">懒汉式饿汉式</a><a class="tag" taget="_blank" href="/search/%E5%8F%8C%E9%87%8D%E6%A3%80%E9%AA%8C%E9%94%81%E5%A4%B1%E8%B4%A5/1.htm">双重检验锁失败</a><a class="tag" taget="_blank" href="/search/%E6%97%A0%E5%BA%8F%E5%86%99%E5%85%A5/1.htm">无序写入</a>
                                    <div>                今天该来的面试还没来,这个店估计不会来电话了,安静下来写写博客也不错,没事翻了翻小易哥的博客甚至与大牛们之间的差距,基础知识不扎实建起来的楼再高也只能是危楼罢了,陈下心回归基础把以前学过的东西总结一下。 
  
*********************************</div>
                                </li>
                                <li><a href="/article/2928.htm"
                                       title="8、数组" target="_blank">8、数组</a>
                                    <span class="text-muted">豆豆咖啡</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84/1.htm">二维数组</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E7%BB%84/1.htm">数组</a><a class="tag" taget="_blank" href="/search/%E4%B8%80%E7%BB%B4%E6%95%B0%E7%BB%84/1.htm">一维数组</a>
                                    <div>  
一、概念 
  
    数组是同一种类型数据的集合。其实数组就是一个容器。 
  
二、好处 
  
    可以自动给数组中的元素从0开始编号,方便操作这些元素 
  
三、格式 
  
//一维数组
1,元素类型[] 变量名 = new 元素类型[元素的个数]
int[] arr =</div>
                                </li>
                                <li><a href="/article/3055.htm"
                                       title="Decode Ways" target="_blank">Decode Ways</a>
                                    <span class="text-muted">hcx2013</span>
<a class="tag" taget="_blank" href="/search/decode/1.htm">decode</a>
                                    <div>A message containing letters from A-Z is being encoded to numbers using the following mapping: 
'A' -> 1
'B' -> 2
...
'Z' -> 26
 
Given an encoded message containing digits, det</div>
                                </li>
                                <li><a href="/article/3182.htm"
                                       title="Spring4.1新特性——异步调度和事件机制的异常处理" target="_blank">Spring4.1新特性——异步调度和事件机制的异常处理</a>
                                    <span class="text-muted">jinnianshilongnian</span>
<a class="tag" taget="_blank" href="/search/spring+4.1/1.htm">spring 4.1</a>
                                    <div>目录 
Spring4.1新特性——综述 
Spring4.1新特性——Spring核心部分及其他 
Spring4.1新特性——Spring缓存框架增强 
Spring4.1新特性——异步调用和事件机制的异常处理 
Spring4.1新特性——数据库集成测试脚本初始化 
Spring4.1新特性——Spring MVC增强 
Spring4.1新特性——页面自动化测试框架Spring MVC T</div>
                                </li>
                                <li><a href="/article/3309.htm"
                                       title="squid3(高命中率)缓存服务器配置" target="_blank">squid3(高命中率)缓存服务器配置</a>
                                    <span class="text-muted">liyonghui160com</span>

                                    <div>  
  
系统:centos 5.x 
  需要的软件:squid-3.0.STABLE25.tar.gz 
1.下载squid 
wget http://www.squid-cache.org/Versions/v3/3.0/squid-3.0.STABLE25.tar.gz 
tar zxf squid-3.0.STABLE25.tar.gz &&</div>
                                </li>
                                <li><a href="/article/3436.htm"
                                       title="避免Java应用中NullPointerException的技巧和最佳实践" target="_blank">避免Java应用中NullPointerException的技巧和最佳实践</a>
                                    <span class="text-muted">pda158</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>1) 从已知的String对象中调用equals()和equalsIgnoreCase()方法,而非未知对象。     总是从已知的非空String对象中调用equals()方法。因为equals()方法是对称的,调用a.equals(b)和调用b.equals(a)是完全相同的,这也是为什么程序员对于对象a和b这么不上心。如果调用者是空指针,这种调用可能导致一个空指针异常 
Object unk</div>
                                </li>
                                <li><a href="/article/3563.htm"
                                       title="如何在Swift语言中创建http请求" target="_blank">如何在Swift语言中创建http请求</a>
                                    <span class="text-muted">shoothao</span>
<a class="tag" taget="_blank" href="/search/http/1.htm">http</a><a class="tag" taget="_blank" href="/search/swift/1.htm">swift</a>
                                    <div>  
 概述:本文通过实例从同步和异步两种方式上回答了”如何在Swift语言中创建http请求“的问题。  
   
如果你对Objective-C比较了解的话,对于如何创建http请求你一定驾轻就熟了,而新语言Swift与其相比只有语法上的区别。但是,对才接触到这个崭新平台的初学者来说,他们仍然想知道“如何在Swift语言中创建http请求?”。 
在这里,我将作出一些建议来回答上述问题。常见的</div>
                                </li>
                                <li><a href="/article/3690.htm"
                                       title="Spring事务的传播方式" target="_blank">Spring事务的传播方式</a>
                                    <span class="text-muted">uule</span>
<a class="tag" taget="_blank" href="/search/spring%E4%BA%8B%E5%8A%A1/1.htm">spring事务</a>
                                    <div>传播方式:  
      新建事务 
      required 
      required_new   - 挂起当前 
  
      非事务方式运行 
      supports 
  &nbs</div>
                                </li>
                </ul>
            </div>
        </div>
    </div>

<div>
    <div class="container">
        <div class="indexes">
            <strong>按字母分类:</strong>
            <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a
                href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a
                href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a
                href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a
                href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a
                href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a
                href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a
                href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a
                href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a>
        </div>
    </div>
</div>
<footer id="footer" class="mb30 mt30">
    <div class="container">
        <div class="footBglm">
            <a target="_blank" href="/">首页</a> -
            <a target="_blank" href="/custom/about.htm">关于我们</a> -
            <a target="_blank" href="/search/Java/1.htm">站内搜索</a> -
            <a target="_blank" href="/sitemap.txt">Sitemap</a> -
            <a target="_blank" href="/custom/delete.htm">侵权投诉</a>
        </div>
        <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved.
<!--            <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>-->
        </div>
    </div>
</footer>
<!-- 代码高亮 -->
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script>
<link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/>
<script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script>





</body>

</html>