C#正则表达式用法总结
最近學(xué)是C#的窗口應(yīng)用開發(fā)編程,然后我在網(wǎng)站搜了一個(gè)早上,結(jié)果大多數(shù)是有一些基礎(chǔ)的才看得懂,像對與我這個(gè)小白,看了半天都看不懂
最后,還是請教了大神,把我教會(huì)了
下面就我對C#的正則表達(dá)式的一些總結(jié),第一次寫博客,哈哈哈哈,寫的不好請見諒,各位大佬們,愛你們。
1.正則表達(dá)式的概念
什么是正則表達(dá)式?
英文Regular Expression,是計(jì)算機(jī)科學(xué)的一一個(gè) 重要概念,她使用一種數(shù)學(xué)算法來解決計(jì)算機(jī)程序中的文本檢索,匹配等問題,正則表達(dá)式語言是一種專門用于字符串處理的語言。在很多語言中都提供了對它的支持,C#也不例外,它可以幫我們解決下面的問題:例如賬號(hào)、密碼的驗(yàn)證等等、
1.1正則表達(dá)式的組成
正則表達(dá)式就是由普通字符以及特殊字符(成為元字符)組成的文字模式。該模式描述在查找文字
1.1.1元字符是什么
所謂元字符就是指那些在正則表達(dá)式中具有特殊意義的專用字符,可以用來規(guī)定其前導(dǎo)字符(即位于元字符前面的字符)在目標(biāo)對象中的出現(xiàn)模式。
1.1.2定位元字符
字符 說明
-
\b 匹配單詞的開始或結(jié)束.
-
\B 匹配非單詞的開始或結(jié)束
-
^匹配必須出現(xiàn)在字符串的開頭或行的開頭
-
$匹配必須出現(xiàn)在以下位置: 字符串結(jié)尾、字符串結(jié)尾處的\n之前或行的結(jié)尾。
-
\A 指定匹配必須出 現(xiàn)在字符串的開頭(忽略 Mutiline 選項(xiàng))。
-
\z指定匹配必 須出現(xiàn)在字符串的結(jié)尾(忽略 Multiline選項(xiàng))。
-
\z指定匹配必須出現(xiàn)在字符串的結(jié)尾或字符串結(jié)尾處的\n之前(忽略Multilie選項(xiàng))。
-
\G 指定匹配必須出現(xiàn)在上- -個(gè)匹配結(jié)束的地方。與Match.NextMatch() -起使用時(shí),此斷言確保所有匹配都是連續(xù)的。
1.2三個(gè)括號(hào)😳
在正則表達(dá)式中有3種類型的括號(hào)
他們分別是:方括號(hào)、花括號(hào)、圓括號(hào)、(簡稱方花園)😁
方括號(hào)“[“和花括號(hào)“{“●
方括號(hào)"[“內(nèi)是需要匹配的字符,
花括號(hào)”{"內(nèi)是指定匹配字符的數(shù)量。
圓括號(hào)“(“ :表示用來分組的。
插入符號(hào)“入”:表示正則式的開始。
美元符號(hào)“$” :表示正則式的結(jié)束。
1.3簡化正則表達(dá)式
| [0-9](數(shù)字) | d |
| [a-z][0-9][_](數(shù)字、字母、下劃線) | W |
| 0次或多次發(fā)生 | * |
| 至少一次發(fā)生 | + |
| 0次或1次發(fā)生 | ? |
1.4@符號(hào)的作用
我們經(jīng)常在正則表達(dá)式字符串上加@字符,目的就是為了,不讓編譯器去解析其中的轉(zhuǎn)義字符,,而作為正則表達(dá)式語法(元字符)存在。
在這里插入代碼片1.5正則表達(dá)式可以實(shí)現(xiàn)四種功能:
因?yàn)槲铱吹狡渌┛驼fC#有很多方法可以用正則表達(dá)式,然后下面的一些例子,都用的是我認(rèn)為,比較簡單的方法。大神勿噴,┗|`O′|┛ 嗷~~
溫馨提示:要運(yùn)用下面的一些語句的要引入
using System.Text.RegularExpressions的命名空間
- 1,獲取:通過正則表達(dá)式,從字符串中獲取我們想要的部分
- 2,匹配:判斷給定的字符中是否符合正則表達(dá)式的過濾邏輯 你可以認(rèn)為正則表達(dá)式表述了一個(gè)字符串的書寫規(guī)則
- 3, 分割
- 4, 替換
2.常用的正則表達(dá)式方法
2.1靜態(tài)方法IsMath
1,靜態(tài)方法IsMatch
IsMath(返回值是一個(gè)布爾類型,用于判斷指定的字符串是否與正則表達(dá)式字符中匹配,它有三個(gè)重載方法)
bool IsMatch(string input, string pattern);
參數(shù):
input: 要搜索匹配項(xiàng)的字符串。
pattern:要匹配的正則表達(dá)式模式。
返回結(jié)果:如果正則表達(dá)式找到匹配項(xiàng),則為true;否則,為false。
bool IsMatch(string inpdt, string pattern, RegexOptions options);
參數(shù):
input: 要搜索匹配項(xiàng)的字符串。
pattern:要匹配的正則表達(dá)式模式。
options:枚舉值 的一一個(gè)按位組合, 這些枚舉值提供匹配選項(xiàng)。
返回結(jié)果:如果正則表達(dá)式找到匹配項(xiàng),則為true;否則,為false。
bool IsMatch(string input, string pattern, RegexOptions options, TimeSpan matchTimeout);
參數(shù):
input: 要搜索匹配項(xiàng)的字符串。
pattern:要匹配的正則表達(dá)式模式。
options:枚舉值的一個(gè)按位組合,這些枚舉值提供匹配選項(xiàng)。
matchTimeout:超時(shí)間隔
或
System.Text.RegularExpressions.Regex.InfiniteMatchTimeout 指示該方法不應(yīng)超時(shí)。
返回結(jié)果:如果正則表達(dá)式找到匹配項(xiàng),則為true;否則,為false。
2.1.1 關(guān)于參數(shù)RegexOptions
它是一個(gè)枚舉類型,有以下枚舉值RegexOptions枚舉值 內(nèi)聯(lián)標(biāo)志 簡單說明 ExplicitCapture n 只有定義了命名或編號(hào)的組才捕獲 IgnoreCase i 不區(qū)分大小寫 IgnorePatternWhitespace x 消除模式中的非轉(zhuǎn)義空白并啟用由#標(biāo)記的注釋。 MultiLine m 多行模式,其原理是修改了^和$的含義 SingleLine s 單行模式,和Multiline相對2.2靜態(tài)方法Match
Match的作用:使用指定的匹配選項(xiàng)在輸入字符串中搜索指定的正則表達(dá)式的第一個(gè)匹配
項(xiàng)。返回一個(gè)包含有關(guān)匹配的信息的對象。同樣有三個(gè)重載方法,參數(shù)和IsMatch方法相同。
此外,在Regex類中, 還有一個(gè)同名的非靜態(tài)方法,適用于多個(gè)實(shí)例的情況下,效率更高- - 些。
下面的關(guān)于Match的三個(gè)重載方法
- Match Match(string input, string pattern);
- Match Match(string input,string pattern, RegexOptions options); input,
- Match Match(string string pattern, RegexOptions options, TimeSpan matchTimeout);
2.3靜態(tài)方法Matchs
靜態(tài)方法Matches,在指定的輸入字符串中搜索指定的正則表達(dá)式的所有匹配項(xiàng)。跟上面方法不同之處,就是這個(gè)方法返回的是所有匹配項(xiàng),他同樣有三個(gè)重載方法,并且參數(shù)和Match方法完全相同此外,在Regex類中,還有一個(gè)同名的非靜態(tài)方法,適用于多個(gè)實(shí)例的情況下,效率更高- -些。
2.4 Replaces函數(shù)
我們知道正則表達(dá)式主要是實(shí)現(xiàn)驗(yàn)證,提取,分割,替換字符的功能.Replace函數(shù)是實(shí)現(xiàn)替換功能的.
1 )Replace(string input,string pattern,string replacement)//input是源字 符串,pattern是匹配的條件,replacement是替換的內(nèi)容,就是把符合匹配條件pattern的內(nèi)容轉(zhuǎn)換成它比如string result = Regex.Replace("abc", "ab", "#" ); ?//結(jié)果是#c,就是把字符串a(chǎn)bc中的ab替換成#2 )Replace(string input,string pattern,string replacement,RegexOptions options)//RegexOptions是- 一個(gè)枚舉類型,用來做- -些設(shè)定//前面用注釋時(shí) 就用到了RegexOptions.IgnorePatternWhitespace.如果在匹配時(shí)忽略大小寫就可以用RegexOptions.lgnoreCase比如string result = Regex.Replace("ABc", "ab", “#" ,RegexOptions.lgnoreCase);總結(jié)
以上是生活随笔為你收集整理的C#正则表达式用法总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 编译ffmpeg安卓库(clang篇),
- 下一篇: android 的各种文件类