正規表示式 字元類減法

2021-09-07 21:27:45 字數 1659 閱讀 2529

字元類減法: [base_group - [excluded_group]]

乙個字元類定義一組字元。 字元類減法將產生一組字元,該組字元是從乙個字元類中排除另乙個字元類中的字元的結果。

字元類減法表示式具有以下形式:

[ base_group -[ excluded_group ]]

方括號 () 和連字元 (-) 是強制的。

base_group 是正字元組或負字元組。 excluded_group 部分是另乙個正字元組或負字元組,或者是另乙個字元類減法表示式(即,可以巢狀字元類減法表示式)。

例如,假設你有乙個由從「a」至「z」範圍內的字元組成的基本組。 若要定義由除字元「m」之外的基本組組成的字符集,請使用 [a-z-[m]]。 若要定義由除字符集「d」、「j」和「p」之外的基本組組成的字符集,請使用 [a-z-[djp]]。 若要定義由除從「m」至「p」字元範圍之外的基本組組成的字符集,請使用 [a-z-[m-p]]。

可考慮使用巢狀字元類減法表示式 [a-z-[d-w-[m-o]]]。

該表示式由最裡面的字元範圍向外計算。 首先,在從「d」至「w」的字元範圍中減去從「m」至「o」的字元範圍,這將產生從「d」至「l」和從「p」至「w」的字符集。 然後,在從「a」至「z」的字元範圍中減去該集合,這將產生字符集 [abcmnoxyz]。

可以將任何字元類用於字元類減法。 若要定義字符集,該字符集包括除空白字元 (\s)、標點通用類別中的字元 (\p)、isgreek 命名塊中的字元 (\p) 以及 unicode next line 控制字元 (\x85) 之外的所有從 \u0000 至 \uffff 的 unicode 字元,請使用 [\u0000-\uffff-[\s\p\p\x85]]。

為字元類減法表示式選擇將會產生有用結果的字元類。 避免使用產生空字符集的表示式,這將無法匹配任何內容,同時避免使用等效於初始基本組的表示式。 例如,表示式 [\p-[\x00-\x7f]] 從 isbasiclatin 常規類別中減去 isbasiclatin 字元範圍內的所有字元,其結果為空集合。 類似地,表示式 [a-z-[0-9]] 的結果為初始基本組。這是因為,基本組(它是從「a」至「z」的字母組成的字元範圍)不包含排除組(它是從「0」至「9」的十進位制數組成的字元範圍)中的任何字元。

下面的示例定義正規表示式 ^[0-9-[2468]]+$,該表示式匹配輸入字串中的零和奇數。正規表示式模式可以解釋為下表中所示內容。元素

說明 從輸入字串的開頭處開始進行匹配。

[0-9-[2468]]+

匹配任意字元(從 0 到 9,除了 2、4、6 和 8 之外)的乙個或多個匹配項。 換句話說,匹配零或奇數的乙個或多個匹配項。

在輸入字串末尾結束匹配。

using

system;

using

system.text.regularexpressions;

public

class

example

;

string pattern = @"

^[0-9-[2468]]+$";

foreach (string input in

inputs)

}}//

the example displays the following output:

//13579753

//335599901

正規表示式 POSIX字元類

一 posix字元類 字元類說明 digit 任何數字 xdigit 任何十六進製制數字 alpha 任何字母 lower 任何小寫字母 upper 任何大寫字母 alnum 任何字母或數字 cntrl ascii控制字元 ascii 0 31 和 ascii 127 punct 不屬於 alnum...

正規表示式字元

正規表示式符號 字元 描述 標記下乙個字元是特殊字元或文字。例如,n 和字元 n 匹配。n 則和換行字元匹配。序列 和 匹配,而 則和 匹配。匹配輸入的開頭。匹配輸入的末尾。匹配前乙個字元零或多次。例如,zo 與 z 或 zoo 匹配。匹配前乙個字元一次或多次。例如,zo 與 zoo 匹配,但和 z...

正規表示式相關 正規表示式字元描述

1 字元描述 將下乙個字元標記為特殊字元或字面值。例如 n 與字元 n 匹 配。n 與換行符匹配。序列 與 匹配,與 匹配。匹配輸入的開始位置。匹配輸入的結尾。匹配前乙個字元零次或幾次。例如,zo 可以匹配 z zoo 匹配前乙個字元一次或多次。例如,zo 可以匹配 zoo 但不匹配 z 匹配前乙個...