精通正規表示式二 Perl中正規表示式的基本應用

2021-08-03 08:23:15 字數 1495 閱讀 1849

本書的第二章主要講的是在perl語言中運用正規表示式,雖然以前沒有接觸過perl語言,但作者的前提就是假設讀者不會perl語言,所以對於有一定程式設計基礎的人來說讀起來沒有太大困難,關於perl語言的簡單入門,除了書上講的,可以參考這篇:本篇文章主要寫一些與正規表示式有關的部分。

my $reply = "2412341dfas"; // 定義乙個字串

if($reply =~ m/^[0-9]+$/) else

可見,『=~』 用來連線欲搜尋的字串和『m/…/』,『m』是匹配的意思,斜槓中間則寫正規表示式

替換的話可以直接在終端執行,很方便

perl -p

-i-e

's/abc/ira/g' word.txt

引數解釋

-p  對目標檔案的每一行進行查詢

-i 將替換的結果寫回檔案

-e 整個程式接在命令後面

單引號中的部分就是乙個perl程式,『s』與前面的『m』想類似,代表替換,『abc』代表匹配的內容,『ira』代表將匹配的內容替換為『ira』,『/g』是乙個引數,代表全域性替換,不加的話只會匹配一行中第乙個,如果這一行中後續還有的話不會替換掉。

如前面的『/g』一樣,perl中還提供了其他的一些引數:

g    全域性替換

i 忽略大小寫

e 將計算後的結果替代匹配的字串

m 增強的行錨點

x 寬鬆排列,並允許出現以#開頭標記的注釋

前面兩個好理解,對於引數『e』,看下面這個例子:

my $x = "比例為24%";

$x =~ s!(\d+)%!$1/100!e; #先將第一組的內容除以100再替換

最後的結果是『比例為0.24』,其中『!』和前面『/』的作用是一樣的,其分隔符的作用,這樣就可以避免轉義除號。

對於第四個增強的行錨點,因為『^』和『$』通常匹配的不是邏輯行的開頭和結尾,而是整個字串的開頭和結尾,什麼意思呢?,比如我們將下面一段文字讀入乙個字串中:

單引號中的部分就是乙個perl程式,『s』與前面的『m』想類似,代表替換

『abc』代表匹配的內容,『ira』代表將匹配的內容替換為『ira』,『/g』是乙個引數,代表全域性替換

本來是有三行,但將它讀取到字串中後,『^』和『$』將只能匹配整個字串的開頭和結尾,即成了一行。更簡單點說,就是在regexr上,字串是沒有勾選multiline的情況,加上『m』後,就成了勾選了multiline的情況。

對於引數『x』,這這只是正規表示式的排版上的問題,正常來說正規表示式是緊密排列的,加上引數『x』後,就可以像寫**一樣寫正規表示式了:

$text =~ s
這樣增強了它的可讀性,這裡面的『』與前面的『/』的作用是一樣的,都是其分隔的作用,這樣做的好處是可以當正規表示式中需要用到『/』的時候不用進行轉義。

精通正規表示式

我只看了前面兩三章 這書的核心是4 5 6章 精通正規表示式 這本書的第四章和第六章比較值得看 1.多選結構 mm gg 表示匹配 mm 或 gg 2.忽略大小寫 s source dest i 搜尋source,將其替換為dest,此處的i只對source起作用,而不會作用於dest。3.單詞分界...

Perl 正規表示式

正規表示式文中列表 將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個後向引用 或乙個八進位制轉義符。匹配輸入字串的開始位置。如果設定了 regexp 物件的multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束位置。如果設定了 regexp 物件的multiline 屬性...

Perl正規表示式

元字元 元字元的含義是具有特殊含義的字元,即為元字元,元字元包括 點號能夠匹配所有的單字元,但是換行字元除外 n 簡易量詞 記載匹配正規表示式的時候有些需要重複的字元或者字串,我們在表示這種重複的形式的時候,即是量詞,我們知道的量詞有 表示至少重複一次,表示重複一次或者一次 以上,指的是重複一次或者...