Permalink
Browse files

关闭分类/标签页的评论,增加友链

  • Loading branch information...
shellvon committed Dec 1, 2017
1 parent dd8ba04 commit 5b7de57df9b7b16917e6186350133ee22eb6656f
@@ -96,7 +96,7 @@
<meta property="og:locale" content="zh-Hans">
<meta property="og:image" content="http://von.sh/assets/img/ipv4-regex.svg">
<meta property="og:image" content="http://von.sh/assets/img/regex101.png">
<meta property="og:updated_time" content="2017-11-30T09:54:07.000Z">
<meta property="og:updated_time" content="2017-12-01T04:13:55.000Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="30分钟学正则">
<meta name="twitter:description" content="有一些人,遇到一个问题时就想:“我知道,我会使用正则表达式。” 然后他就有两个问题了。–by Jamie Zawinski">
@@ -498,11 +498,11 @@ <h2 id="元字符"><a href="#元字符" class="headerlink" title="元字符"></a
</ul>
<p>我们来看元字符的一些例子:<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">&quot;[Tt]he&quot; =&gt; The car parked in the garage</span><br><span class="line"> ^^^ ^^^</span><br><span class="line">&quot;[^c]ar&quot; =&gt; The car parked in the garage</span><br><span class="line"> ^^^ ^^^</span><br><span class="line">&quot;c.+t&quot; =&gt; The fat cat sat on the mat</span><br><span class="line"> ^^^^^^^^^^^^^^^^^^</span><br><span class="line"> ¦----被(.+)匹配-¦</span><br><span class="line">&quot;b.g&quot; =&gt; baidugoogle big bug bag</span><br><span class="line"> ^^^ ^^^ ^^^</span><br></pre></td></tr></table></figure></p>
<p>如你所见,我们正则的表达式匹配流程会是从左边往右边挨个来,就像你读本文如此。<br>这些元字符可不简单,万丈高楼也是靠它们。</p>
<h2 id="子表达式"><a href="#子表达式" class="headerlink" title="子表达式"></a>子表达式</h2><p>在算法领域有个很好的思想叫做 <strong>分治法</strong> 一样。当我们遇到一个复杂的需求,我们总是可以拆解成无数个小的问题,然后尝试去解决小问题,最后这些小问题的答案来解决大问题,正则表达式亦是如此。<br>一个复杂的正则表达式都是由它们简单的正则表达式组合起来的。这些简单的正则我们称之为 <strong>子表达式</strong> 。它们通常是指用 <code>|</code> 分割的多选分支或者括号内的表达式。<br>比如<code>gr(e|a)y</code>。我们可以讲(e|a)看成子表达式,其中<code>e</code>和<code>a</code>也可以看成子表达式,严格意义上讲,上述的<code>g</code>/<code>r</code>/<code>y</code>等也算子表达式。不过这样太细了意义也不大。我们主要还是关注|分割和括号()包围起来的更有意思。<br>首先,考虑这样一个问题,如果需要让你用刚学的<strong>元字符</strong>去匹配一个<code>0-23</code>的范围的数字(比如时间刚好这个范围)怎么办?哦,天啦,你可能会说<code>[0-23]</code> 刚好啊,因为<code>-</code>可以表示范围,很遗憾,并不行,通常-能表示的开始和结束都只有一个字符(虽然16进制这种就不是了),但是你要知道,上述表达式的真实含义是匹配<code>[0123]</code>这四个数字。<br>一个最容易想到的就是拆分它,我们可以利用<strong>子表达式</strong>这个概念。<br>怎么拆呢?</p>
<h2 id="子表达式"><a href="#子表达式" class="headerlink" title="子表达式"></a>子表达式</h2><p>在算法领域有个很好的思想叫做 <strong>分治法</strong> 一样。当我们遇到一个复杂的需求,我们总是可以拆解成无数个小的问题,然后尝试去解决小问题,最后这些小问题的答案来解决大问题,正则表达式亦是如此。<br>一个复杂的正则表达式都是由它们简单的正则表达式组合起来的。这些简单的正则我们称之为 <strong>子表达式</strong> 。它们通常是指用 <code>|</code> 分割的多选分支或者括号内的表达式。<br>比如<code>gr(e|a)y</code>。我们可以将(e|a)看成子表达式,其中<code>e</code>和<code>a</code>也可以看成子表达式,严格意义上讲,上述的<code>g</code>/<code>r</code>/<code>y</code>等也算子表达式。不过这样太细了意义也不大。我们主要还是关注|分割和括号()包围起来的更有意思。<br>首先,考虑这样一个问题,如果需要让你用刚学的<strong>元字符</strong>去匹配一个<code>0-23</code>的范围的数字(比如时间刚好这个范围)怎么办?哦,天啦,你可能会说<code>[0-23]</code> 刚好啊,因为<code>-</code>可以表示范围,很遗憾,并不行,通常<code>-</code>能表示的开始和结束都只有一个字符(虽然16进制这种就不是了),但是你要知道,上述表达式的真实含义是匹配<code>[0123]</code>这四个数字。<br>一个最容易想到的就是拆分它,我们可以利用<strong>子表达式</strong>这个概念。<br>怎么拆呢?</p>
<pre><code>1. `[0-9]` 可以匹配范围个位数
2. `1[0-9]` 可以匹配10-19的
3. `2[0-3]` 可以匹配20-23的
</code></pre><p>显然,最后用或<code>|</code>将他们链接起来就符合要求了撒。</p>
</code></pre><p>显然,最后用或<code>|</code>将他们连接起来就符合要求了撒。</p>
<p>如果更加复杂一点呢,比如要匹配一个 IPv4 地址呢?其实原理一样,只是数字范围变成了0-255。这正如文章开头的图中所示。</p>
<p>更为复杂的就是,考虑匹配一个日期,需要考虑月份和天数的关系,甚至还有闰年(通常这种时候你还要用正则的话,你估计已经开始过度使用正则了,你需要避免这样)</p>
<h2 id="简写"><a href="#简写" class="headerlink" title="简写"></a>简写</h2><p>懒惰是程序员的美德之一。在上面的例子中我们写[0-9]要写5个字符,有没有更简写的呢?</p>
@@ -704,6 +704,24 @@ <h1 id="参考资料"><a href="#参考资料" class="headerlink" title="参考



<div>
<ul class="post-copyright">
<li class="post-copyright-author">
<strong>本文作者:</strong>
shellvon
</li>
<li class="post-copyright-link">
<strong>本文链接:</strong>
<a href="http://von.sh/2017/11/29/learn-regex-in-30-minutes/" title="30分钟学正则">http://von.sh/2017/11/29/learn-regex-in-30-minutes/</a>
</li>
<li class="post-copyright-license">
<strong>版权声明: </strong>
本博客所有文章除特别声明外,均采用 <a href="https://creativecommons.org/licenses/by-nc-sa/3.0/" rel="external nofollow" target="_blank">CC BY-NC-SA 3.0</a> 许可协议。转载请注明出处!
</li>
</ul>

</div>


<footer class="post-footer">

@@ -866,6 +884,24 @@ <h1 id="参考资料"><a href="#参考资料" class="headerlink" title="参考



<div class="links-of-blogroll motion-element links-of-blogroll-inline">
<div class="links-of-blogroll-title">
<i class="fa fa-fw fa-globe"></i>
小伙伴们
</div>
<ul class="links-of-blogroll-list">

<li class="links-of-blogroll-item">
<a href="http://blog.kimleo.net/" title="kimLeo" target="_blank">kimLeo</a>
</li>

<li class="links-of-blogroll-item">
<a href="https://plusplus7.com" title="plus7" target="_blank">plus7</a>
</li>

</ul>
</div>




@@ -448,6 +448,24 @@ <h1 class="post-title" itemprop="name headline">关于我</h1>



<div class="links-of-blogroll motion-element links-of-blogroll-inline">
<div class="links-of-blogroll-title">
<i class="fa fa-fw fa-globe"></i>
小伙伴们
</div>
<ul class="links-of-blogroll-list">

<li class="links-of-blogroll-item">
<a href="http://blog.kimleo.net/" title="kimLeo" target="_blank">kimLeo</a>
</li>

<li class="links-of-blogroll-item">
<a href="https://plusplus7.com" title="plus7" target="_blank">plus7</a>
</li>

</ul>
</div>




@@ -475,6 +475,24 @@ <h2 class="post-title">



<div class="links-of-blogroll motion-element links-of-blogroll-inline">
<div class="links-of-blogroll-title">
<i class="fa fa-fw fa-globe"></i>
小伙伴们
</div>
<ul class="links-of-blogroll-list">

<li class="links-of-blogroll-item">
<a href="http://blog.kimleo.net/" title="kimLeo" target="_blank">kimLeo</a>
</li>

<li class="links-of-blogroll-item">
<a href="https://plusplus7.com" title="plus7" target="_blank">plus7</a>
</li>

</ul>
</div>




@@ -475,6 +475,24 @@ <h2 class="post-title">



<div class="links-of-blogroll motion-element links-of-blogroll-inline">
<div class="links-of-blogroll-title">
<i class="fa fa-fw fa-globe"></i>
小伙伴们
</div>
<ul class="links-of-blogroll-list">

<li class="links-of-blogroll-item">
<a href="http://blog.kimleo.net/" title="kimLeo" target="_blank">kimLeo</a>
</li>

<li class="links-of-blogroll-item">
<a href="https://plusplus7.com" title="plus7" target="_blank">plus7</a>
</li>

</ul>
</div>




@@ -475,6 +475,24 @@ <h2 class="post-title">



<div class="links-of-blogroll motion-element links-of-blogroll-inline">
<div class="links-of-blogroll-title">
<i class="fa fa-fw fa-globe"></i>
小伙伴们
</div>
<ul class="links-of-blogroll-list">

<li class="links-of-blogroll-item">
<a href="http://blog.kimleo.net/" title="kimLeo" target="_blank">kimLeo</a>
</li>

<li class="links-of-blogroll-item">
<a href="https://plusplus7.com" title="plus7" target="_blank">plus7</a>
</li>

</ul>
</div>




@@ -94,7 +94,7 @@
<meta property="og:site_name" content="shellvon的博客">
<meta property="og:description" content="好好学习,天天向上">
<meta property="og:locale" content="zh-Hans">
<meta property="og:updated_time" content="2017-11-30T06:54:30.000Z">
<meta property="og:updated_time" content="2017-12-01T04:01:00.000Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="所有分类">
<meta name="twitter:description" content="好好学习,天天向上">
@@ -338,12 +338,6 @@ <h1 class="post-title" itemprop="name headline">所有分类</h1>




<div class="comments" id="comments">
<div id="lv-container" data-id="city" data-uid="MTAyMC8zMjA5Mi84NjU2"></div>
</div>



</div>

@@ -451,6 +445,24 @@ <h1 class="post-title" itemprop="name headline">所有分类</h1>



<div class="links-of-blogroll motion-element links-of-blogroll-inline">
<div class="links-of-blogroll-title">
<i class="fa fa-fw fa-globe"></i>
小伙伴们
</div>
<ul class="links-of-blogroll-list">

<li class="links-of-blogroll-item">
<a href="http://blog.kimleo.net/" title="kimLeo" target="_blank">kimLeo</a>
</li>

<li class="links-of-blogroll-item">
<a href="https://plusplus7.com" title="plus7" target="_blank">plus7</a>
</li>

</ul>
</div>




@@ -622,17 +634,6 @@ <h1 class="post-title" itemprop="name headline">所有分类</h1>




<script type="text/javascript">
(function(d, s) {
var j, e = d.getElementsByTagName(s)[0];
if (typeof LivereTower === 'function') { return; }
j = d.createElement(s);
j.src = 'https://cdn-city.livere.com/js/embed.dist.js';
j.async = true;
e.parentNode.insertBefore(j, e);
})(document, 'script');
</script>



@@ -456,6 +456,24 @@ <h2 class="post-title">



<div class="links-of-blogroll motion-element links-of-blogroll-inline">
<div class="links-of-blogroll-title">
<i class="fa fa-fw fa-globe"></i>
小伙伴们
</div>
<ul class="links-of-blogroll-list">

<li class="links-of-blogroll-item">
<a href="http://blog.kimleo.net/" title="kimLeo" target="_blank">kimLeo</a>
</li>

<li class="links-of-blogroll-item">
<a href="https://plusplus7.com" title="plus7" target="_blank">plus7</a>
</li>

</ul>
</div>




Large diffs are not rendered by default.

Oops, something went wrong.
@@ -572,6 +572,24 @@ <h1 class="post-title" itemprop="name headline">



<div class="links-of-blogroll motion-element links-of-blogroll-inline">
<div class="links-of-blogroll-title">
<i class="fa fa-fw fa-globe"></i>
小伙伴们
</div>
<ul class="links-of-blogroll-list">

<li class="links-of-blogroll-item">
<a href="http://blog.kimleo.net/" title="kimLeo" target="_blank">kimLeo</a>
</li>

<li class="links-of-blogroll-item">
<a href="https://plusplus7.com" title="plus7" target="_blank">plus7</a>
</li>

</ul>
</div>




@@ -455,6 +455,24 @@ <h2 class="post-title">



<div class="links-of-blogroll motion-element links-of-blogroll-inline">
<div class="links-of-blogroll-title">
<i class="fa fa-fw fa-globe"></i>
小伙伴们
</div>
<ul class="links-of-blogroll-list">

<li class="links-of-blogroll-item">
<a href="http://blog.kimleo.net/" title="kimLeo" target="_blank">kimLeo</a>
</li>

<li class="links-of-blogroll-item">
<a href="https://plusplus7.com" title="plus7" target="_blank">plus7</a>
</li>

</ul>
</div>




@@ -94,7 +94,7 @@
<meta property="og:site_name" content="shellvon的博客">
<meta property="og:description" content="好好学习,天天向上">
<meta property="og:locale" content="zh-Hans">
<meta property="og:updated_time" content="2017-11-30T06:54:44.000Z">
<meta property="og:updated_time" content="2017-12-01T04:01:30.000Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="所有标签">
<meta name="twitter:description" content="好好学习,天天向上">
@@ -338,12 +338,6 @@ <h1 class="post-title" itemprop="name headline">所有标签</h1>




<div class="comments" id="comments">
<div id="lv-container" data-id="city" data-uid="MTAyMC8zMjA5Mi84NjU2"></div>
</div>



</div>

@@ -451,6 +445,24 @@ <h1 class="post-title" itemprop="name headline">所有标签</h1>



<div class="links-of-blogroll motion-element links-of-blogroll-inline">
<div class="links-of-blogroll-title">
<i class="fa fa-fw fa-globe"></i>
小伙伴们
</div>
<ul class="links-of-blogroll-list">

<li class="links-of-blogroll-item">
<a href="http://blog.kimleo.net/" title="kimLeo" target="_blank">kimLeo</a>
</li>

<li class="links-of-blogroll-item">
<a href="https://plusplus7.com" title="plus7" target="_blank">plus7</a>
</li>

</ul>
</div>




@@ -622,17 +634,6 @@ <h1 class="post-title" itemprop="name headline">所有标签</h1>




<script type="text/javascript">
(function(d, s) {
var j, e = d.getElementsByTagName(s)[0];
if (typeof LivereTower === 'function') { return; }
j = d.createElement(s);
j.src = 'https://cdn-city.livere.com/js/embed.dist.js';
j.async = true;
e.parentNode.insertBefore(j, e);
})(document, 'script');
</script>



Oops, something went wrong.

0 comments on commit 5b7de57

Please sign in to comment.