字元類和特殊字元

2021-10-06 12:12:59 字數 2166 閱讀 8891

目的什麼是角色類?perl在正規表示式中使用方括號定義可以以任何順序匹配的一類字元。 如果您的字元類為[abc]並且字串為'cab',則匹配的第乙個字元為'c',因為忽略了方括號內列出字元的順序。

在字元類的內部和外部以及點「。」當在字元類中使用perl時,對正規表示式中使用的大多數字元的處理方式有所不同。 似乎引起最大混亂的乙個字元是點:「。」。 在字元類之外,點用於萬用字元匹配。 點可以匹配任何東西。 帶有量詞的點可以匹配不同數量的任何東西。

/.?/(零個或乙個)/.*/(零個或多個)/.+/(乙個或多個)/。/(最小1,最大4)

為了匹配模式中的文字點,您必須使用反斜槓對其進行轉義:

$ foo =〜/\./;注意 :您還可以使用perls \ q修飾符來轉義搜尋模式中的大多數元字元。

在字元類中,點沒有元含義(沒有特殊含義)。 它不用於萬用字元匹配,就像它在字元類外部一樣,而是被視為文字點。 在字元類中使用時,無需對其進行轉義。 如果您更喜歡以這種方式編寫**,則逃避它並不會帶來傷害,但這不是必需的。

這些示例都是相同的:

/[.]/

/\q.\e/

/[\.]/

當然,只有乙個點的字元類會有點愚蠢,但是在某些情況下它很有用:否定的字元類。 以後再說。

特殊字元在字元類中,特殊字符集是

-] \ ^ $,並使用轉義進行匹配:/ [\-\] \\\\ ^ \ $]似乎很明顯為什麼這兩個字元

] \需要轉義,所以我將不再討論它們。

標量資料型別符號$插入到字元類中,這意味著您可以建立動態字元類:

my $character_class = q;

if ($foo =~ /[$character_class]/) 

^字元用於定義我上面提到的否定字元類。

否定的字元類意味著不匹配^右邊的內容:

unless ($foo =~ /[^.?!]/) 

]

它非常類似於:

unless ($foo !~ /[.?!]/) 

實際上可能是相同的,但截至本文撰寫時我還不確定。

隨時告訴我。

由於這不是正規表示式教程,因此我將不詳細討論否定字元類。

最後乙個特殊字元是連字元-。 因為它是作為字元類內部(與字元類外部)相同的範圍運算子進行插值的,所以也必須對其進行轉義以匹配文字(在模式中)。 一系列字元的示例:

[0-9a-za-z]perl填充邏輯上落在範圍兩端之間的所有字元。 0-9與0123456789相同,az均為小寫字母字元,az均為大寫字母字元。

規則的兩個例外前面我說過,必須對字符集-] \ ^ $進行轉義,以便在字元類中將它們匹配。 好吧,熟悉perl的人都太清楚了,規則通常會有例外。 在這種情況下,例外是-^。 如果^僅是字元類中的唯一字元,則必須將其轉義:

/ [\ ^] /如果在字元類內的任何其他位置使用它,則沒有特殊含義,例如:

[\ d \ s ^ \ t]^在上述字元類中被視為文字^。 範圍字元-也是如此。 如果您將其用作唯一字元,或用作字元類中的第乙個或最後乙個字元,則無需轉義以匹配字面量-在模式中:

/ [abc-] /

/ [-abc] /

/ [-] /

在以上示例中,-被視為文字。

字元類是perl有時會變得有些朦朧和混亂的乙個示例。 當然,對於大多數程式語言而言,情況都是這樣,但是perl有時會顯得有些快和鬆散,其語法和字元根據用法和上下文具有多種含義。 我想您要麼接受這種行為,要麼不接受。

凱文(又名kevinadc)

資源perldoc.perl.org:perl的正規表示式快速啟動

perldoc.perl.org:perl的正規表示式教程

www.perl.org:由西門科澤斯開始的perl

本文受《

創用cc許可 。

from:

xml中處理特殊字元和轉義字元

xml中的特殊字元 和 這類字元是xml標記字元,在xml中有特殊的含義。當在 sql 查詢 或 xpath 查詢 中指定這些字元時,必須對它們進行適當的編碼 也稱為實體編碼 下表列出了這些特殊字元並描述了它們的含義。有關更多資訊,請參見xml1.0 規範 中的xml1.0 規範。特殊字元 特殊含義...

轉義字元與特殊字元

1 常見的轉義字元 c中定義了一些字母前加 來表示常見的那些不能顯示的ascii字元,如 0,t,n等,就稱為轉義字元,因為後面的字元,都表示的不是它本來的ascii字元意思。轉義字元 意義ascii碼值 十進位制 a響鈴 bel b退格 bs 將當前位置移到前一列 f換頁 ff 將當前位置移到下頁...

過濾特殊字元

過濾特殊字元 public static string encoding string src 利用反射呼叫乙個繼承層次上的函式族,比如安裝程式,有安裝資料庫的,安裝檔案系統的等,命名均已 install 開始,你就可以將引數part設為 install src是其實類例項,root是終止父類 pu...