正規表示式

2021-09-25 16:30:11 字數 1489 閱讀 1291

用途:

1. 判斷給定的整個字串是否滿足某pattern。

2. 在給定的整個字串中找出滿足某pattern的所有字串。給定字串裡是否存在某字串滿足某pattern。

上述pattern就是正規表示式。

任何的pattern都要@修飾,比如@"^[^/:*?""<>|\r\n]$",@"\d-\d"。

用途1)的pattern的首尾要有^,$ e.g. 資料夾名字的正規表示式 @"^[^/:*?""<>|\r\n]$"

用途2)的pattern的首尾不能有^,$。

string input3 = "adf234-56789sdf123-76589asdf";

string pattern3 = @"\d-\d";

字串34-56789,23-76589都會搜尋出來。

例子分析

1.使用多線模式,其中 ^ 和 $ 匹配每行的開頭和末尾,不是輸入字串的開頭和末尾。

預設情況下,$ 僅與輸入字串的末尾匹配。 

如果指定了 regexoptions.multiline 選項,它將與換行符 (\n) 或輸入字串的末尾匹配。

但是,它並不與回車符/換行符的組合匹配。

若要成功匹配它們,使用子表示式 \r?$ 只替代 $。當然最終的match結果不含^,$所匹配的字元。

下面例子來自但是稍作修改,因為windows下換行是由\r\n組成的,所以這裡用writeline。

第乙個 pattern = @"^(\w+)\s(\d+)$";顯然不行。

$這裡要匹配\n,而因為windows下換行是由\r\n組成的,所以pattern裡還有要有個\r?,?必須加上,你不能假設換行肯定是由\r\n組成的。

乙個缺點就是匹配的match.value字元的最後有個\r.

1

static

void

test3()219

20if (!matched)

21 console.writeline("

no matches.");

22console.writeline();

2324

//redefine pattern to handle multiple lines.

25 pattern = @"

^(\w+)\s(\d+)\r?$";

26 console.writeline("

with multiline option:");

27foreach (match match in

regex.matches(input, pattern, regexoptions.multiline))

2831 }

例2:找出輸入文字的非空的第一行。

1

static

void

test4()

224 }

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...