正則表達式特別需要注意的點:“空“字符的匹配

在正則表達式中,[...]代表1個字符,不管里面有多少字符,最終這個東西的結果都是1個字符

對于表達式[^a]表達的匹配除了a之外的字符,并且是1個字符。

需要注意的是,有些特殊字符是不會被匹配的。

我們看一個示例,對于txt文件testRegularExperxx.txt

   aaabbb

對于該文件,輸入命令grep -n '[^a]' testRegularExperxx.txt

得到的結果是:
在這里插入圖片描述

你會發現,對于看起來的“空行”的處理似乎是不一樣的,為什么呢?

仔細看看文件,雖然都是空行,但是,有的是空格,有的是 \t,有的是 \n。它們看起來都是空的,但是處理方式不一樣。

這里,對于[^]a除了a之外的1個字符,能夠識別空格\t,而忽略掉 \t


我們換一個新的文件,看看文件的內容
在這里插入圖片描述在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

選中的時候顏色不同,也可以看出端倪來。

HexCharDescriptionEscape Character
09HTHorizontal Tab\t
0aLFLine Feed\n
20spaceSpace

所以,你就知道了[...]的特殊的地方了。

那么如何識別空行呢?也就是僅包含\n的行。

使用^$識別!這也是比較特殊的點了。

在這里插入圖片描述

小結

  • [...]不能識別\n
  • ^$可以識別\n,但是注意,是識別一行僅有\n的空行

另外,正則表達式的不同規則,是可以進行花樣排列組合,從而識別復雜單詞!進一步也可以作為詞法分析的實用工具。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/384595.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/384595.shtml
英文地址,請注明出處:http://en.pswp.cn/news/384595.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vim多列操作--插入/刪除

插入 How to insert text at beginning of a multi-line selection in vi/VimVim Commands 刪除 ctrl v使用上下左右鍵選中一片區域按d刪除

vim進行行內某部分的復制剪切粘貼

ctrl v使用方向鍵選中你要復制的部分 按d(剪切)或者按y(復制)再移動到你的目標位置,按p粘貼(在正常模式下才行,如果不是,先按esc) 這個過程與你操作word文檔的復制粘貼…

函數調用堆棧

基于孟寧老師的Linux內核分析 1 int g(int x){ 2 int y x 3;3 return y;4 }5 6 int f(int x){7 int z x 10;8 return g(z);9 }10 11 int main(){12 int a f(8) 1;13 return 0;14…

gdb調試的幾點提示(1)

GDB debugger Examining Memory Continuing and Stepping How to translate a virtual memory address to a physical address? s和n是C語言的下一步 si和ni是匯編語言下一步 gdb能夠查看的都是虛擬地址,不能查看物理地址,應用程序都不能查看物理地址…

C語言讀取文件

C語言一次性讀取文件 C - File I/O C library function - fread() 需要注意的點 fgets函數,一次只能讀取一行,并且在結尾自動添加\0fread函數,可以讀取很多內容,但是不會添加\0需要手動完成,具體看[參考1]

Vivado提高綜合和實現的速度

讓計算機的資源盡可能給vivado,綜合、實現的時候修改一個參數 jobs改為你的計算機的最大值,我的計算機是12核的。 速度會快很多!

安裝Ubuntu RISC V toolchain失敗(網速、git配置原因)

git獲取大容量工程出錯:RPC failed; curl GnuTLS recv error : Decryption has failed. error: RPC failed; curl 56 GnuTLS recv error (-54): Error in the pull function.fatal: The remote end 官方GitHub倉庫 gitee鏡像倉庫 如果網速不夠&#xff0…

Linux環境變量 set env export區別

參考鏈接 How to Set Environment Variables in Linux set 他能夠顯示當前shell的環境變量 它針對的對象是當前shell,如果關閉了就沒了! 直接使用set --help查看就可以。 env 顯示當前用戶的環境變量,針對的當前登錄的用戶 export 它能…

VirtualBox Ubuntu個人配置

注意這里VT-x啟用,除了在BIOS啟用CPU虛擬化,還得在命令行設置一次才可以勾選。 F:\>cd F:\VirtualBox # 進入VirtualBox安裝目錄F:\VirtualBox>VBoxManage.exe list vms # 查找所有虛擬機 "rhel64" {240f96d8-6535-431d-892e-b70f3dc4…

Ubuntu停止維護版本的軟件源配置和系統升級方法

這里以Ubuntu 20.10版本為例(當前是2022.2.14,該版本已經停止維護),我們現在需要正常使用該版本,并且期待升級到21.10版本,我們需要 配置正確是軟件源升級該版本 配置正確的軟件源 配置國內鏡像源 我們…

優質學習內容(自用)

Verilog Verilog教程HDLBits — Verilog Practice中科大Verilog OJVerilog語法和典型電路verilog中if與case語句不完整產生鎖存器的問題 Chisel chisel offcial website playground OpenXiangShan Chisel playgroundchisel IntelliJ IDEA playground library Maven libr…

diff and colordiff on Ubuntu

在Ubuntu中使用diff來對比文件差異,但是不是很好用,尤其是著色方面,用起來很麻煩,因此可以安裝colordiff。 我們有兩個文件file1和file2,使用命令 colordiff file1 file2 -y -B -W 140就可以對比文件差異&#xff0c…

基于IntelliJ IDEA和Ubuntu的Chisel開發環境搭建

注意!本教程不是詳細解說!只說思路,其余請自己查閱!不適合小白用戶。 環境 Ubuntu 20.04 LTSIntelliJ IDEA 過程 在Ubuntu下安裝IDEA,具體版本號的使用,請自行查閱官網安裝IDEA插件,EasySoc…

verilator編譯 更新文件的規則

本文請讀者【直接關閉】,我后面的實踐結果似乎和本文的實踐結果不一樣,真是見鬼了!我不知道發生了什么,還沒有來得及進一步校驗! 在其他文件不變的前提下,如果即將生成的mk文件和已有的mk文件不一樣&#…

幫助你成為高手的視頻和資料

1. 為什么大多數人不會真正成功 博客鏈接 視頻鏈接 2. TED演講:真正拉開你與周圍人之家差距的,是自學能力 視頻鏈接 3 埃隆馬斯克:第一性原理,少用類比,類比多了就不能抓住本質了 4 如何成為一個頂尖高手 文章鏈…

核心思想

程序員是能夠改變世界的,至少是改變自己的世界。 對于重復的工作,你可以寫一個shell腳本讓他自動化執行; 對于麻煩的工作,你可以看看有沒有相關的插件讓它操作起來更簡化,實在不行你自己造一個; 程序員必…

【數據結構】快速排序非遞歸算法及其改進

在學數據結構中排序這一章節的時候,有一道有關快速排序的作業題描述如下: 按下述要求編寫快速排序的非遞歸算法: 定義一個棧(或隊列),把整個序列的上、下界入棧(或隊列)。當棧&#…

【數據結構】對快速排序原理的理解(圖解,通俗易懂)

學習數據結構時,書本上直接給出了快速排序的過程以及代碼,對其原理解釋的不夠詳細,琢磨代碼后,發現其原理其實十分簡單,簡述如下: (1)在待排序列中找一個“中樞元素”(書…

【離散數學】圖論基礎知識

文章目錄1 圖的基本概念2 圖的連通性3 圖的矩陣表示4 幾種特殊的圖4.1 二部圖4.2 歐拉圖4.3 哈密頓圖4.4 平面圖5 無向樹6 生成樹1 圖的基本概念 無向圖: 簡而言之,邊不帶方向的圖就是無向圖。 有向圖: 簡而言之,邊帶方向的圖就…

【操作系統】信號量解決經典同步問題

文章目錄1. 基本結構2. P,V操作3. 信號量的應用3.1 信號量實現進程互斥3.2 信號量實現前驅關系4. 用信號量解經典同步問題4.1 生產者消費者問題4.2 讀者寫者問題4.3 狒狒過橋問題4.4 理發師理發問題4.5 哲學家進餐問題信號量機制是Dijkstra提出的一種卓有成效的進程同步工具。信…