正則表達式及其用法

正則表達式及其用法

1.   什么是正則表達式

正則表達式是Global search REgular expression and Print out the line的縮寫。是一類用字符所書寫的模式,其中許多字符并不表示其字面意義,而是表達控制或通配等功能。

在Linux中,用正則表達式搜索文本的常用命令:

grep: 使用基本正則表達式匹配文本。

egrep:使用擴展正則表達式匹配文本,同: grep –E。

fgrep: 快速grep,不支持正則表達式,不識別元字符。

    語法格式:

      grep [option]… 'PATTERN' FILE…

2.   基本正則表達式

    (1)     字符匹配

(a)  .: 匹配任意單個字符。

(b)  []:匹配指定范圍內的任意單個字符。

[0-9] 或[[:num:]]:匹配任意當個數字

[a-z]或[[:lower:]]:匹配任意單個小寫字母

[A-Z]或[[:upper:]]:匹配任意一個大寫字母

[[:space:]]:匹配空格或制表符

[[:punct:]]:匹配特殊字符

[[:alpha:]]:匹配單個任意字符

[[:alnum:]]:匹配單個字母或數字

(c)  [^]:匹配不包括指定范圍內的任意單個字符。

   (2)     次數匹配

a*: 匹配它前面出現的字符任意次。

b\?: 匹配它前面的字符0次或1次。

c\{m\}: 匹配它前面出現的字符m次。

d\{m,n\}: 匹配它前面出現的字符至少m次,至多n次。

e\{m,\}: 匹配它前面出現的字符至少m次。

f\{,n\}: 匹配它前面出現的字符至多n次。

g.*: 匹配任意長度的任意字符.

  (3)     位置錨定

a^: 錨定句首,寫在模式的最左面。

b$: 錨定句尾,寫在模式的最右端。

c\<: 錨定詞首,寫在模式的最左面。

d\>: 錨定詞尾,寫在模式的最右面。

e.* : 空白行

  (4)     分組\(\)

       分組中的模式匹配到的內容,可由正則表達式引擎記憶在內存中,之后可被引用。

  (5)     引用 \#

引用第#個括號中匹配到的內容,而不是模式本身。

如:\(ab\?c\).*\1    abcmnabc 匹配

3.   擴展正則表達式

  (1)     字符匹配(同基本正則表達式)

(a)  .: 匹配任意單個字符。

(b)  []:匹配指定范圍內的任意單個字符。

(c)  [^]:匹配不包括指定范圍內的任意單個字符。

  (2)     次數匹配

a*: 匹配它前面出現的字符任意次。

b?: 匹配它前面的字符0次或1次。

c+: 匹配前面出現的字符至少一次。

c{m}: 匹配它前面出現的字符m次。

d{m,n}: 匹配它前面出現的字符至少m次,至多n次。

e{m,}: 匹配它前面出現的字符至少m次。

f{,n}: 匹配它前面出現的字符至多n次。

  (3)     位置錨定 (同基本正則表達式)

  (4)     分組()

  (5)     引用 \# (同基本正則表達式)

  (6)     或者  |

  如:a|b   表示 a或b

      ab|cd 表示 ab或cd

練習:

1.新建一個文本文件,假設有如下內容:

            He like his lover.

            He love his lover.

            He like his liker.

            He love his liker.

        找出其中最后一個單詞是由此前某單詞加r構成的行。

[root@centos7 ~]# cat ./liker.txt 

He like his lover.

He love his lover.

He like his liker.

He love his liker.

[root@centos7 ~]# grep '\<\(.*\)\>.*\1r' ./liker.txt 

He love his lover.

He like his liker.

[root@centos7 ~]# 

2.寫一個模式,能匹配合理的ipv4地址;1.0.0.0-239.255.255.255

[root@centos7 ~]# cat ./ip.txt                       

249.1.0.1

229.2.1111.1

0.0.0.0

255.255.255.255

239.255.255.255

1.0.0.0

1000.0.0.0.0

1.1000.0.0

1.2.2000.0

1.2.3.4000

127.0.1.10

[root@centos7 ~]# grep -o -E '\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-3][0-9])((\.)([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}\>' ./ip.txt 

239.255.255.255

1.0.0.0

1.2.3.40

127.0.1.10

[root@centos7 ~]# 

原創文章,作者:浪跡天涯,如若轉載,請注明出處:http://www.www58058.com/7969

(0)
浪跡天涯浪跡天涯
上一篇 2015-09-14 09:19
下一篇 2015-09-14 09:21

相關推薦

  • 第五周小練習

    1顯示當前系統上root,fedora或user1用戶的默認shell egrep "^(root|user1|fedora)" /etc/passwd|cut -d ':' -f 1,7 2找出/etc/rc.d/init.d/functions文件中某個單…

    Linux干貨 2016-12-12
  • 推倒一個二十來歲青壯年第一步

    首先:找到他家在哪里,了解他的生長環境 然后:調查他的信息,慢慢了解他,學會和他交流,學會控制他

    Linux干貨 2016-09-21
  • Shell腳本、特殊變量、declare、算術運算、退出狀態、條件測試、括號區別

    Shell腳本、特殊變量、declare、算術運算、退出狀態、條件測試、括號區別 Shell腳本基礎(一) 練習

    Linux干貨 2016-08-15
  • 在Centos7上源碼編譯httpd

    在Centos7上源碼編譯httpd 安裝源碼包 首先在http://httpd.apache.org下載所需要的安裝包 小編在這里下載的是httpd-2.4.27.tar apr-1.6.2.tar apr-util-1.6.0.tar 首先編譯安裝apr-1.6.2.tar.gz #1 tar -zxf apr-1.6.2.tar.gz #先解壓安裝包 …

    2017-08-21
  • History,Help——Linux基本命令(6)

    1.     history   當你在玩Linux的時候,如果你經常使用命令行來控制你的Linux系統,那么有效地使用命令歷史機制將會使效率獲得極大提升。 history是shell的內置命令,其內容在系統默認的shell的man手冊中。 一些用法: history[-c] [-d offset] [n] …

    2017-07-15
  • 推薦-DNS BIND初探

    DNS BIND DNS BIND 正向解析 反向解析 從服務器 子域授權 轉發 view DNS 什么是DNS? DNS是domain name system,域名系統的簡寫,負責實現域名與IP的轉換。 DNS的功能是什么? DNS能夠將IP地址與域名相互雙向轉換,能夠實現域名訪問。 DNS的歷史:  1. 初期網絡…

    2016-04-19
欧美性久久久久