正则表达式特别需要注意的点:“空“字符的匹配方法
<p>在正则表达式中,<code>[...]</code>代表<strong>1个</strong>字符,不管里面有多少字符,最终这个东西的结果都是<strong>1个字符</strong>。</p><p>对于表达式<code>[^a]</code>表达的匹配除了a之外的字符,并且是1个字符。</p>
<p>需要注意的是,有些<strong>特殊字符</strong>是不会被匹配的。</p>
<p>我们看一个示例,对于txt文件testRegularExperxx.txt</p>
<div class="jb51code"><pre class="brush:plain;">aaa
bbb</pre></div>
<p>对于该文件,输入命令<code>grep -n '[^a]' testRegularExperxx.txt</code></p>
<p>得到的结果是:</p>
<p style="text-align:center"><img alt="在这里插入图片描述" src="https://img.jbzj.com/file_images/article/202303/2023032910340139.png" /></p>
<p>你会发现,对于看起来的“<strong>空行</strong>”的处理似乎是不一样的,为什么呢?</p>
<p>仔细看看文件,虽然都是空行,但是,有的是<strong>空格</strong>,有的是 <strong>\t</strong>,有的是 <strong>\n</strong>。它们看起来都是空的,但是处理方式不一样。</p>
<p>这里,对于<code>[^]a</code>除了a之外的1个字符,能够识别<strong>空格</strong>和 <strong>\t</strong>,而忽略掉 <strong>\t</strong>。</p>
<p>我们换一个新的文件,看看文件的内容</p>
<p style="text-align:center"><img alt="在这里插入图片描述" src="https://img.jbzj.com/file_images/article/202303/2023032910340140.png" /></p>
<p style="text-align:center"><img alt="在这里插入图片描述" src="https://img.jbzj.com/file_images/article/202303/2023032910340141.png" /></p>
<p style="text-align:center"><img alt="在这里插入图片描述" src="https://img.jbzj.com/file_images/article/202303/2023032910340142.png" /></p>
<p style="text-align:center"><img alt="在这里插入图片描述" src="https://img.jbzj.com/file_images/article/202303/2023032910340143.png" /></p>
<p>选中的时候颜色不同,也可以看出端倪来。</p>
<p>HexCharDescriptionEscape Character09HTHorizontal Tab\t0aLFLine Feed\n20spaceSpace</p>
<p>所以,你就知道了<code>[...]</code>的特殊的地方了。</p>
<p>那么如何识别<strong>空行</strong>呢?也就是<strong>仅包含</strong><code>\n</code>的行。</p>
<p>使用<code>^$</code>识别!这也是比较特殊的点了。</p>
<p style="text-align:center"><img alt="在这里插入图片描述" src="https://img.jbzj.com/file_images/article/202303/2023032910340544.png" /></p>
<p>小结 <code>[...]</code>不能识别<code>\n</code><code>^$</code>可以识别<code>\n</code>,但是注意,是识别一行仅有<code>\n</code>的空行</p>
<p>另外,正则表达式的不同规则,是可以进行花样排列组合,从而识别复杂单词!进一步也可以作为词法分析的实用工具。</p>
頁:
[1]