Perl正則表達(dá)式是一種非常強(qiáng)大的文本處理工具,可以用來匹配復(fù)雜的模式
基本語法:在Perl中,正則表達(dá)式使用m//
或//
操作符進(jìn)行匹配。m
表示多行匹配模式,而//
表示單行匹配模式。在正則表達(dá)式中,^
表示行首,$
表示行尾,.
表示任意字符,*
表示前面的字符可以出現(xiàn)零次或多次,+
表示前面的字符必須出現(xiàn)一次或多次,?
表示前面的字符可以出現(xiàn)零次或一次,|
表示或的關(guān)系,()
用于分組。
常用元字符:
.
:匹配任意單個(gè)字符*
:匹配前面的字符零次或多次+
:匹配前面的字符一次或多次?
:匹配前面的字符零次或一次^
:匹配行的開頭$
:匹配行的結(jié)尾|
:表示或的關(guān)系,用于匹配多個(gè)選擇()
:用于分組,改變運(yùn)算符的優(yōu)先級(jí)\
:用于轉(zhuǎn)義特殊字符常用預(yù)定義字符類:
\d
:匹配數(shù)字字符(等價(jià)于[0-9]
)\D
:匹配非數(shù)字字符(等價(jià)于[^0-9]
)\w
:匹配單詞字符(等價(jià)于[a-zA-Z0-9_]
)\W
:匹配非單詞字符(等價(jià)于[^a-zA-Z0-9_]
)\s
:匹配空白字符(空格、制表符、換行符等)\S
:匹配非空白字符常用正則表達(dá)式修飾符:
i
:忽略大小寫m
:多行模式,^
和$
可以匹配每一行的開頭和結(jié)尾s
:讓.
匹配包括換行符在內(nèi)的任意字符x
:忽略空白和注釋常用正則表達(dá)式函數(shù):
=~
:將正則表達(dá)式與字符串進(jìn)行匹配,返回一個(gè)匹配結(jié)果數(shù)組!~
:將正則表達(dá)式與字符串進(jìn)行不匹配,返回一個(gè)匹配結(jié)果數(shù)組pos()
:返回當(dāng)前匹配的位置span()
:返回匹配的起始和結(jié)束位置replace()
:使用指定的字符串替換匹配到的內(nèi)容下面是一些使用Perl正則表達(dá)式匹配復(fù)雜模式的例子:
# 匹配郵箱地址
my $email = "example@example.com";
if ($email =~ /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/) {
print "Email is valid\n";
} else {
print "Email is invalid\n";
}
# 匹配電話號(hào)碼
my $phone = "123-456-7890";
if ($phone =~ /^\d{3}-\d{3}-\d{4}$/) {
print "Phone number is valid\n";
} else {
print "Phone number is invalid\n";
}
# 匹配URL
my $url = "https://www.example.com";
if ($url =~ /^https?:\/\/[^\s]+/) {
print "URL is valid\n";
} else {
print "URL is invalid\n";
}
這些例子展示了如何使用Perl正則表達(dá)式匹配不同類型的復(fù)雜模式。你可以根據(jù)需要組合使用這些元字符、預(yù)定義字符類和修飾符來構(gòu)建更復(fù)雜的正則表達(dá)式。