正則習點 09

2021-08-26 16:41:24 字數 1930 閱讀 2737

讀取檔案的一段程式:

#! /usr/bin/perl -w

# mastering regular expressiona: chapter 2section 2.

# fiveth program

undef $/;

$textstr = <>;

print $textstr;

2.2.6.1 cooking special characters

原始文字轉換位html編碼:

2.2.6.2 separating paragraphs

需要強調的是:「^」和「$」通常匹配的不是邏輯行(logical line)的開頭和結尾,而是整個的字串的開頭和結束位置。

看起來的正則,像:

s/^\s*$//mg

m: 表示匹配多個邏輯行。

2.2.6.3 「linkizing」 an email address

s/\b(username regex\@hostnameregex)\b/$1<\/a>/g

2.2.6.4 matching the username and hostname

根據e-mail規則,可以得出:

「\w[-.\w]*\@\w+(\.\w+)」

使用者名稱是紅色部分;黑色部分為「@」;藍色部分為主機名;

請注意,我們把連字元放在字元組第一位,這樣確保它們被作為連字元,而不是用來表示範圍!

2.2.6.5 putting it together

完整程式如下:

#! /usr/bin/perl -w

# mastering regular expressiona: chapter 2 section 2.

# fiveth program

undef $/;

$textstr = <>;

$textstr =~ s/&/&/g;

$textstr =~ s//>/g;

$textstr =~ s/^\s*$//mg;

# turn email addresses into links ...

$textstr =~ sgix;

print $textstr;

其中的修飾符「x」表示使用者能夠以「寬鬆排列」編排正規表示式。

http url的基本形式是http://hostname/path,其中的/path部分是可選的。於是我們可以得到下面的正則:

正則習點 08

在這一節,我們要引入乙個新的概念 環視 lookaround 他的定義 不匹配任何字元,只匹配文字中的特定位置 positions 環視分兩種 順序環視 lookahead 和逆序環視 lookbehind 我們在後面的小段會給出詳細的介紹。現在我們只需要知道順序環視是從左到右檢視文字 而逆序環視是...

09 向量點積計算

總時間限制 1000ms 記憶體限制 65536kb 描述給定兩個n維向量a a1,a2,an 和b b1,b2,bn 求點積a b a1b1 a2b2 anbn。輸入第一行是乙個整數n。1 n 1000。第二行包含n個整數a1,a2,an。第三行包含n個整數b1,b2,bn。相鄰整數之間用單個空格...

JAVA 正則注意點

1.貪婪與非貪婪模 非貪婪模式 匹配字元越少越好 修飾匹配次數的特殊符號後再加上乙個 號 a d b 匹配整個表示式後,再進行非貪婪模式 d 直接試非貪婪模式 貪婪模式 預設,d 至少匹配一次 非貪婪模式 d 最少匹配次數,即1次 2.方向引用 方向引用 nnn 每一對 會分配乙個編號,使用 的捕獲...