3.正規表示式雜識
以檔名作模擬
*.txt
:可選擇以任何文字開頭,以.txt結尾的所有檔案。
以語言作對比
正規表示式可看作語言,普通字元對應普通語言中的單詞,而元字元對應語法。
? 完整的正規表示式由小的構建模組單元組成。
egrep工具:% egrep 』 正規表示式 』 檔名元字元/元字串行
匹配物件
匹配位置的元字元
^匹配一行的開頭位置
$匹配一行的結束位置
\<
匹配單詞的開始位置
\>
匹配單詞的結束位置
匹配單個字元的元字元
[···]
匹配單個列出的字元
[^···]
匹配單個未列出的字元
.匹配單個任意字元
\元字元
匹配元字元對應的普通字元量詞?
只可以匹配一次,也可以不匹配
*可匹配多次,也可不匹配
+至少匹配1次,也可匹配多次
至少匹配min次,最多匹配max次
其他元字元
-表示單個字元所在的範圍(僅限於字元組)
|匹配任意分隔的表示式
(···)
1.限定多選結構的範圍
2.標註量詞作用的元素
3.為反向引用「捕獲」文字
\1,\2,...
匹配第幾個括號內表示式相同的文字
在同乙個位置能夠匹配的若干字元(必須匹配乙個字元)
特殊性:關於元字元的規定不同於正規表示式語言。
-
字元:表示乙個範圍
? 只有在字元組內部(非開頭),連字元才是元字元連字元出現在字元組的開頭,則只表示乙個普通的字元。
[^...]
:匹配任何未列出(不等於已列出字元)的字元。
❗多選結構可以包含很多字元,但不能超越括號的界限。
? 字元組和多選結構的區別乙個字元組只能匹配目標文字中的單個字元
多選結構自身可能是完整的正規表示式,可匹配任意長度的文字。
-i
,放在正規表示式之前。
(···)\整數
:匹配與表示式先前部分匹配的同樣的文字
❗無法跨行查詢。在字元組內部無效。
^cat
:以c作為一行的第乙個字元,緊接乙個a,緊接乙個t的文字。
^cat$
:只包含cat的行。
^$
:空行
^
:無意義,能匹配每一行。
gr[ea]ly
:首先匹配g,接下來是r,然後是e或a,再是l,最後是y。
[0-9a-fa-f]
:匹配0到9、a到f或a到f其中的乙個,可用於處理十六進製制數字。
q[^u]
:首先匹配q,再匹配除u以外的字元。
03.19.76
:首先匹配0,再匹配3,再匹配乙個任意字元,再依次匹配1 、9、任意字元、7、6。
^(from|subject|date):
:f作為行的第乙個字元,接著是r、o、m、:或s作為行的第乙個字元,接著是u、b、j、e、c、t、:或d作為行的第乙個字元,接著是a、t、e、:。
\
: 匹配單詞的開頭位置,然後是c、a、t這3個字母,然後是單詞的結束位置。
colou?r
:匹配c、o、l、o、u或不匹配、r。
:匹配<、h、r、至少1次的空格、s、i、z、e、任意次空格、=、任意次空格、1、4、任意次空格。
\<([a-za-z]+) +/1\>
:單詞以字母開頭的單詞,接著是空格(至少乙個)、與前面一樣的單詞。
\([a-za-z]+\)
:首先是(、再是單詞、最後是)。
第一章 正規表示式
正規表示式是高階的文字模式匹配 抽取 或文字形式的搜尋和替換功能提供了基礎。正規表示式 簡稱regex 是由一些字元或特殊符號組成的字串,他們描述了模式的重複或表述多個字元,於是正規表示式能夠按照某一模式匹配一系列有相似特徵的字串。python使用re模組來支援正規表示式。符號描述 匹配0次或者多次...
python正規表示式 第一章
正規表示式包 re re.search pattern,string 其中pattern是字串形式提供的正規表示式,string是需要匹配的字串 使用 和 測試string有pattern完整匹配 re.search 0123456799 2 none true 只要有乙個匹配成功,就會返回true...
python 核心程式設計》第一章 正規表示式
import rem re.match foo bar foo print m.group footype m.group strm.group 返回匹配的字串 pattern foo bar m re.match pattern,foobarfooooooook print m.group foo...