基礎正則表達式介紹與練習

基礎正則表達式介紹與練習

一、什么是正則表達式

在做文字處理或編寫程序時,用到查找、替換等功能,使用正則表達式能夠簡單快捷的完成目標。簡單而言,正則表達式通過一些特殊符號的幫助,使用戶可以輕松快捷的完成查找、刪除、替換等處理程序。例如 grep, expr, sed , awk. 或 Vi 中經常會使用到正則表達式,為了充分發揮 shell 編程的威力,需要精通正則表達式。正規表示法基本上是一種『表示法』, 只要工具程序支持這種表示法,那么該工具程序就可以用來作為正規表示法的字符串處理之用。 也就是說,例如 vi, grep, awk ,sed 等等工具,因為她們有支持正規表示法, 所以,這些工具就可以使用正規表示法的特殊字符來進行字符串的處理。

二、正則表達式特殊符號

首先是正則表達式的特殊符號:

[:alnum:]代表英文大小寫字母及數字 
[:alpha:]代表英文大小寫字母
[:blank:]代表空格和 tab 鍵
[:cntrl:]鍵盤上的控制按鍵,如 CR,LF,TAB,DEL [:digit:]代表數字 [:graph:]代表空白字符以外的其他 [:lower:]小寫字母 [:print:]可以被打印出來的任何字符 [:punct:]代表標點符號 [:upper:]代表大寫字符 [:space:]任何會產生空白的字符如空格,tab,CR 等 [:xdigit:]代表 16 進位的數字類型 

特殊符號實例

任意建立一個文本并編輯。或者以原有的文本做實驗皆可。

$  touch regular_express.txt
$  vi regular_express.txt //或者  sudo gedit regular_express.txt

操作截圖:

圖片描述信息

文本內容為:

"Open Source" is a good mechanism to develop programs.
apple is my favorite food.
Football game is not use feet only.
this dress doesn't fit me.
However, this dress is about $ 3183 dollars.
GNU is free air not free beer.
Her hair is very beauty.
I can't finish the test.
Oh! The soup taste good.
motorcycle is cheap than car.
This window is clear.
the symbol '*' is represented as start.
Oh!My god!
The gd software is a library for drafting programs.
You are the best is mean you are the no. 1.
The world <Happy> is the same with "glad".
I like dog.
google is the best tools for search keyword.
goooooogle yes!
go! go! Let's go.
# I am VBird

查找小寫字母:

$ grep -n '[[:lower:]]' regular_express.txt

操作截圖:

藍色為匹配成功的字符

圖片描述信息

查找數字:

# grep -n '[[:digit:]]' regular_express.txt

操作截圖:

圖片描述信息

三、語系對正則表達式的影響

由于不同語系的編碼數據不同,所以造成不同語系的數據選取結果有所差異。以英文大小寫為例,zh_CN.big5 及 C 這兩種語系差異如下:

  • LANG=C 時: 0 1 2 3 4....ABCDE...Zabcde...z
  • LANG=zh_CN 時:0 1 2 3 4...aAbBcCdD.....zZ

在使用正則表達式[A-Z]時, LANG=C 的情況下,找到的僅僅是大寫字符 ABCD..Z。而在 LANG=zh_CN 情況下,會選取到 AbBcCdD.....zZ 字符。因此在使用正則表達式時要特別留意語系。

由于我們一般使用的兼容與 POSIX 的標準,因此使用 C 語系。

四、簡單例子 :ls 命令正則表達式應用

ls 命令是 linux 下最常用的命令。ls 命令是 list 的縮寫,缺省下 ls 用來打印出當前目錄的清單。

命令中‘ * ’號是正則表達式的一種,代表任意字符串。

$ ls
$ ls a*   //打印出以 a 開頭的文件及內容或者目錄
$ ls *s   //打印以 s 結尾的文件及內容或者目錄
$ ls Pub* // Public 文件為空,所有沒有打印任何內容
$ ls e*   //沒有以 e 開頭的文件,所有顯示沒有找到匹配項

操作截圖:

圖片描述信息

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

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

相關文章

android canvas 網絡圖,【巨坑:toDataURL】canvas合成網絡圖片

不知有沒有小伙伴用過canvas合成圖片&#xff0c;然后爆炸報錯截圖尼瑪&#xff0c;然后各種搜索&#xff0c;不外乎以下幾種坑爹處理方案&#xff1a;后端處理&#xff0c;比如Access-Control-Allow-Origin "*"(要是請求到其他網站的圖片就不適用了&#xff0c;比如…

水晶報表如何查看sql_有了這個報表工具,一鍵生成自定義的各種報表,還可以導出Excel...

EasyReport是一個簡單易用的Web報表工具,它的主要功能是把SQL語句查詢出的數據轉換成報表頁面&#xff0c; 同時支持表格的跨行(RowSpan)與跨列(ColSpan)配置。 同時它還支持報表Excel導出、圖表顯示及固定表頭與左邊列的功能。功能介紹本工具從數據庫(MySQL,Oracle,SQLServer,…

python 三維向量 交互_Blender實現Nature of Code1.5單位向量[Nature of Node 004]

【Nature of Node #004】Blender創意編程進階應用&#xff1a;實現Nature of CodeNature of Code 1.5, Unit Vector (Normalize)背景介紹這個系列“Nature of Node”&#xff0c;是專門用Blender的Node&#xff08;節點&#xff09;方式來實現Nature of Code。用到一個Blender插…

Sitemesh3的使用及配置

1 . Sitemesh 3 簡介 Sitemesh 是一個網頁布局和修飾的框架&#xff0c;基于 Servlet 中的 Filter&#xff0c;類似于 ASP.NET 中的‘母版頁’技術。參考&#xff1a;百度百科&#xff0c;相關類似技術&#xff1a;Apache Tiles。 官網&#xff1a;http://wiki.sitemesh.org/wi…

等保項目流程

等級保護&#xff1a;直屬管理公安局 產品必須通過公安局安全許可證分級保護&#xff1a;直屬管理保密局 產品必須通過保密局銷售許可證等級保護&#xff1a;一般分為5級&#xff0c;目前最高用到是等保4級總概&#xff1a;定級——前期調研——總…

鴻蒙系統r如何升級,高歌猛進,鴻蒙系統升級機型再次確認,花粉:終等到!...

雖然華為手機現在的壓力非常大&#xff0c;但是在前進的道路上&#xff0c;真的充滿了樂觀精神&#xff0c;而且現在也算是一路高歌猛進了&#xff0c;發展路線開始加快了許多&#xff0c;無論是新機還是系統&#xff0c;都有著非常多的新消息。因為華為手機的實力很強&#xf…

Oracle快速備份表數據

Oracle數據庫中備份表數據。 例子&#xff1a; 1 create table table_name_bak as select * from table_name 1 create table table_name_bak as select * from table_name 2 where table_name.date between TO_DATE(2018-09-25,yyyy-MM-dd) and TO_DATE(2018-09-26,yyyy-MM-d…

git pull

今天在服務器上git pull是出現以下錯誤&#xff1a; error: Your local changes to the following files would be overwritten by merge: application/config/config.php application/controllers/home.php Please, commit your changes or stash them before you can merge. …

jq控制div是否展示_jQuery控制多個DIV的顯示和隱藏

問題補充&#xff1a;這是我寫的JSfunction Previous(){for(var i1;i<3;i){if(document.getElementById("d"i).style.display"block"){document.getElementById("d"(i-1)).style.display"block";}document.getElementById("d&…

C# 線程間不能調用剪切板的問題

最近做一個項目&#xff0c;需要用到線程&#xff0c;而且要用到剪切板&#xff0c;創建了一個子線程之后發現在子線程中剪切板上獲取不到數據&#xff0c;當時特別納悶&#xff0c;上網查資料&#xff0c;最后終于搞定&#xff0c;現將解決方法歸納如下&#xff1a; 第一步&am…

android studio背景模糊_[Android翻譯]CameraX:過去、現在和未來的一瞥

CameraX是一個未捆綁的Android Jetpack庫&#xff0c;它可以幫助你在Android應用中輕松添加攝像頭功能。傳統上&#xff0c;由于Android設備種類繁多&#xff0c;編程模型復雜&#xff0c;在Android上構建具有相機功能的應用程序非常困難。現在成千上萬的開發者都在使用CameraX…

html頁面根據分辨率縮放,html2Canvas根據不同分辨率,生成pdf內容自適應

根據屏幕大小不同&#xff0c;頁面內容自適應并一頁展示&#xff0c;應該如何實現// 導出頁面為PDF格式import html2Canvas from html2canvasimport JsPDF from jspdfexport default{install (Vue, options) {Vue.prototype.getPdf function () {setTimeout(() > {var titl…

【agc002f】Leftmost Ball(動態規劃)

【agc002f】Leftmost Ball&#xff08;動態規劃&#xff09; 題面 atcoder洛谷 題解 我們從前往后依次把每個顏色按順序來放&#xff0c;那么如果當前放的是某種顏色的第一個球&#xff0c;那么放的就會變成\(0\)號顏色&#xff0c;所以無論何時&#xff0c;\(0\)號顏色的數量不…

VS2010中的快捷鍵

一. VS2010中的快捷鍵 1&#xff1a; Ctrl Enter &#xff08;在光標指定位置的上 K C &#xff08;注釋&#xff09; Ctrl E U &#xff08;取消注釋&#xff09;  <>  Ctrl K U &#xff08;取消注釋&#xff09; 5&#xff1a; Tab &#xff08;增加縮進&a…

export function函數傳參_04 js高階函數(惰性函數、柯里化函數、compose函數)和單例設計模式...

高階函數的定義在《javascript設計模式和開發實踐》中是這樣定義的。函數可以作為參數被傳遞&#xff1b;函數可以作為返回值輸出。結合這兩個特點&#xff0c;首先想到的肯定是回調函數&#xff0c;回調函數也是高階函數的一種&#xff0c;除了回調函數&#xff0c;還有很多的…

Javascript構造函數的繼承

僅供學習參考&#xff0c;原文鏈接&#xff1a;http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_inheritance.html 今天要介紹的是&#xff0c;對象之間的"繼承"的五種方法。 比如&#xff0c;現在有一個"動物"對象的構造函數。 funct…

python輸入字符串str_python字符串(str)

#value "raitOrEi"#v value.capitalize()#首字母大寫#print(v)#v1 v.casefold()#全部變小寫&#xff0c;不只是英文的&#xff0c;其他語言特殊的大小寫也變換#print(v1)#v2 v.lower()#只是英文變小寫#print(v2)#設置寬度&#xff0c;并將內容居中#20 代指總長度…

html5 audio api 錄音,如何使用HTML5 Web Audio API錄制我的聲音

在webkit瀏覽器上,您可以將get user media api與webkitGetUserMedia一起使用 – 如html5rocks所示.如果你想用你的聲音來創建javascript事件(例如控制屏幕上的對象)你必須分析傳入的聲音(例如事件1的高頻率 – 事件2的低頻率,語音分析要復雜得多,見下文)另外,還有chrome的’x-w…

修改密碼

在updateservlet.java中寫了方法&#xff0c;修改用戶密碼&#xff0c;代碼不成功求大神指教&#xff0c;代碼如下&#xff1a; updateadminpw.jsp <% page contentType"text/html;charsetgb2312" pageEncoding"gb2312" %><% taglib uri"ht…

MlLib--邏輯回歸筆記

批量梯度下降的邏輯回歸可以參考這篇文章&#xff1a;http://blog.csdn.net/pakko/article/details/37878837 看了一些Scala語法后&#xff0c;打算看看MlLib的機器學習算法的并行化&#xff0c;那就是邏輯回歸&#xff0c;找到package org.apache.spark.mllib.classification下…