tft每日頭條

 > 職場

 > 正則表達式基本寫法

正則表達式基本寫法

職場 更新时间:2024-11-20 03:28:56

正則表達式,又稱規則表達式。正則表達式的英語為:Regular Expression,常簡寫為regex、regexp或RE,是計算機科學中的一個概念。正則表達式是一種用來匹配字符串的強有力的武器。它的設計思想是用一種描述性的語言來給字符串定義一個規則,凡是符合規則的字符串,我們就認為它“匹配”了,否則,該字符串就是不合法的。在很多文本編輯器裡,正則表達式通常被用來檢索、替換那些符合某個模式的文本,許多計算機程序設計語言也都支持利用正則表達式進行字符串操作。正則表達式用于字符串處理、表單驗證等場合,實用高效,所以我們很有必要去掌握它,本文梳理一些工作中常用的正則表達式,以備不時之需。

正則表達式基本寫法(常用正則表達式超強整理)1

本文通過Linux系統中的grep命令來學習正則表達式,當grep與正則結合在一起時,grep就會根據正則表達式的含義在文本中查找出符合條件的字符串。

位置匹配

測試文件1内容如下:

# cat reg1 hello everyone I am laoliang Linux hello Linux I likeLinuxverymuch!

正則表達式基本寫法(常用正則表達式超強整理)2

^”表示錨定行首,匹配輸入字符串的開始位置。比如”^hello”表示隻匹配位于行首的hello字符串。

正則表達式基本寫法(常用正則表達式超強整理)3

$”表示錨定行尾,匹配輸入字符串的結尾位置。比如”hello$”表示隻匹配位于行尾的hello字符串。

正則表達式基本寫法(常用正則表達式超強整理)4

”^”與”$”分别代表錨定行首與錨定行尾,那麼,我們将它們結合在一起使用,”^Linux$”表示Linux既位于行首,同時也位于行尾,換句話說,就是整行中隻有一個單詞Linux。

正則表達式基本寫法(常用正則表達式超強整理)5

那麼”^$”表示什麼意思呢?”^$”就表示行首與行尾相連,換句話說就是空行。”-n”參數可以顯示行号,可以看到第5行空行被匹配到了。

正則表達式基本寫法(常用正則表達式超強整理)6

\<”表示錨定詞首。”\<lao”表示以lao作為詞首的單詞将會被匹配到。

正則表達式基本寫法(常用正則表達式超強整理)7

\>”表示錨定詞尾。”liang\>”表示以liang作為詞尾的單詞将會被匹配到。

正則表達式基本寫法(常用正則表達式超強整理)8

同理,我們也可以将”\<“與”\>”結合在一起使用,”\<am\>”表示當am既是詞首又是詞尾時則會被匹配到,換句話說,就是當am作為一個獨立的單詞時,則會被匹配到。

正則表達式基本寫法(常用正則表達式超強整理)9

正則表達式中,除了”\<“與”\>”能夠表示錨定詞首與錨定詞尾以外,我們還可以使用”\b”去代替”\<“和”\>”,”\b”既能錨定詞首,也能錨定詞尾,示例如下:

正則表達式基本寫法(常用正則表達式超強整理)10

\B”則與”\b”正好相反,”\B”是用來匹配非單詞邊界的,如下”\BLinux”表示隻要Linux不是詞首就會被匹配到,同理”Linux\B”表示隻要Linux不是詞尾就會被匹配到。

正則表達式基本寫法(常用正則表達式超強整理)11

次數匹配

測試文件2内容如下:

# cat reg2 a a a aa aaa aaaaabbb ab abc abcc eaf bf eccf ef eef eeefffff

正則表達式基本寫法(常用正則表達式超強整理)12

\{n\}” 表示前面的字符連續出現n次,将會被匹配到。比如”a\{2\}”表示a連續出現兩次就會被匹到。

正則表達式基本寫法(常用正則表達式超強整理)13

\{x,y\}”表示之前的字符連續出現的次數在x與y之間,将會被匹配到。比如”a\{2,4\}”表示連續出現2次,3次,4次a字母将會被匹配。

正則表達式基本寫法(常用正則表達式超強整理)14

*”表示之前的字符連續出現任意次數(包括0次),将會被匹配到。比如”e*f”表示ef中間e出現任意次将會匹配。

正則表達式基本寫法(常用正則表達式超強整理)15

.”表示匹配任意單個字符。比如”ee..”表示ee後面跟随任意兩個字符都會被匹配到,”空格”也算作單個字符所以也會被匹配。

正則表達式基本寫法(常用正則表達式超強整理)16

.*”可以理解為”.”與”*”的結合,表示連續出現任意次的任意單個字符,換句話說就是匹配任意長度的任意字符。比如”a.*”表示a字母後面存在任意長度的任意字符都可以被匹配到。

正則表達式基本寫法(常用正則表達式超強整理)17

\?”表示匹配其前面的字符0或1次,也就是前面的字符要麼沒有要麼有一個。比如”abc\?”表示ab後面c出現0次或者1次都會被匹配到。

正則表達式基本寫法(常用正則表達式超強整理)18

\ ”表示匹配其前面的字符至少1次,也就是前面的字符必須有至少一個。比如”abc\ ”表示ab後面c至少要出現1次才會被匹配到。

正則表達式基本寫法(常用正則表達式超強整理)19

字符匹配

測試文件3内容如下:

# cat reg3 a a123 a123b a123$ a123bc456 abcdefg aBdCeFg aBCD a1a3 a#@!

正則表達式基本寫法(常用正則表達式超強整理)20

[[:alpha:]]” 表示匹配任意字母(不區分大小寫)。比如"a[[:alpha:]]\{3\}"表示隻有a字母後面跟随了3個字母的字符串才會被匹配到。還有一種方式”[a-zA-Z]”也能表示任意字母。

正則表達式基本寫法(常用正則表達式超強整理)21

[[:lower:]]”表示匹配任意小寫字母。比如"a[[:lower:]]\{3\}"表示隻有當a後面的3個字符均為小寫字母時,才會被匹配到。還有一種方式”[a-z]”也能表示任意一個小寫字母。

正則表達式基本寫法(常用正則表達式超強整理)22

[[:upper:]]”表示匹配任意大寫字母。比如"a[[:upper:]]\{3\}"表示隻有當a後面的3個字符均為小寫字母時,才會被匹配到。還有一種方式”[A-Z]”也能表示任意一個大寫字母。

正則表達式基本寫法(常用正則表達式超強整理)23

[[:digit:]]” 表示匹配任意數字。比如"a[[:digit:]]\{3\}"表示隻有當a後面的3個字符均為數字時,才會被匹配到。還有一種方式”[0-9]”也能表示任意一個數字。

正則表達式基本寫法(常用正則表達式超強整理)24

[[:alnum:]]” 表示匹配任意數字或字母。比如"a[[:alnum:]]\{3\}"表示當a後面的3個字符為數字或字母時會被匹配到。還有一種方式”[a-zA-Z0-9]”與之等效。

正則表達式基本寫法(常用正則表達式超強整理)25

我們可以把上面[[:alpha:]]等拆成兩部分理解:

  • 第一部分:最外層的[ ],表示指定範圍内的任意單個字符;
  • 第二部分:最内層的[:alpha:],表示不區分大小寫的字母。

[ ]”就表示匹配指定範圍内的任意單個字符的意思。比如"a[bB#3]"表示a後面是b或B或#或3都可以匹配到。

正則表達式基本寫法(常用正則表達式超強整理)26

[^ ]”表示匹配指定範圍外的任意單個字符,它與”[ ]”的含義正好相反。比如“[^0-9]”表示匹配單個非數字字符,與[0-9]的含義這正好相反。

正則表達式基本寫法(常用正則表達式超強整理)27

轉義符

測試文件4内容如下:

# cat reg4 abc a!@# a...bc a*bc

正則表達式基本寫法(常用正則表達式超強整理)28

\”與正則中的符号結合在一起時,就表示這個符号本身的含義。比如”.”在正則表達式中代表任意單個字符,如果我們需要匹配字母a後面兩個.就需要用到轉義符”\”。

正則表達式基本寫法(常用正則表達式超強整理)29

案例

我們需要從ifconfig命令的結果中找出IPv4格式的IP地址,正則表達式可以如下進行編寫:

\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}

正則表達式基本寫法(常用正則表達式超強整理)30

這裡可以分為三部分進行理解:

  • 第一部分”\([0-9]\{1,3\}\.\)”表示一個最少為1位數字,最多為3位數字的字符串,并且這個字符串後面跟随了一個”.”,我們把這個帶有點的數字字符串當做一個整體。
  • 第二部分”\{3\}”表示之前的字符需要連續出現3次,當它與第一部分的正則結合在一起時,表示符合第一部分正則的字符串需要連續出現3次。
  • 第三部分的正則為”[0-9]\{1,3\}”表示一個最少為1位數字,最多為3位數字的字符串。

這樣我們就匹配出來了IP地址。

以上就是關于正則表達式的介紹了,相信在工作中你一定會用到它!

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关職場资讯推荐

热门職場资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved