網站首頁 編程語言 正文
前言
最近學是C#的窗口應用開發編程,然后我在網站搜了一個早上,結果大多數是有一些基礎的才看得懂,像對與我這個小白,看了半天都看不懂
最后,還是請教了大神,把我教會了
下面就我對C#的正則表達式的一些總結,第一次寫博客,哈哈哈哈,寫的不好請見諒,各位大佬們,愛你們。
1.正則表達式的概念
什么是正則表達式?
英文Regular Expression,是計算機科學的一一個 重要概念,她使用一種數學算法來解決計算機程序中的文本檢索,匹配等問題,正則表達式語言是一種專門用于字符串處理的語言。在很多語言中都提供了對它的支持,C#也不例外,它可以幫我們解決下面的問題:例如賬號、密碼的驗證等等、
1.1正則表達式的組成
正則表達式就是由普通字符以及特殊字符(成為元字符)組成的文字模式。該模式描述在查找文字
1.1.1元字符是什么
所謂元字符就是指那些在正則表達式中具有特殊意義的專用字符,可以用來規定其前導字符(即位于元字符前面的字符)在目標對象中的出現模式。
1.1.2定位元字符
字符 說明
- \b 匹配單詞的開始或結束.
- \B 匹配非單詞的開始或結束
- ^匹配必須出現在字符串的開頭或行的開頭
- $匹配必須出現在以下位置: 字符串結尾、字符串結尾處的\n之前或行的結尾。
- \A 指定匹配必須出 現在字符串的開頭(忽略 Mutiline 選項)。
- \z指定匹配必 須出現在字符串的結尾(忽略 Multiline選項)。
- \z指定匹配必須出現在字符串的結尾或字符串結尾處的\n之前(忽略Multilie選項)。
- \G 指定匹配必須出現在上- -個匹配結束的地方。與Match.NextMatch() -起使用時,此斷言確保所有匹配都是連續的。
1.2三個括號?
在正則表達式中有3種類型的括號
他們分別是:方括號、花括號、圓括號、(簡稱方花園)?
方括號“[“和花括號“{“●
方括號"[“內是需要匹配的字符,
花括號”{"內是指定匹配字符的數量。
圓括號“(“ :表示用來分組的。
插入符號“入”:表示正則式的開始。
美元符號“$” :表示正則式的結束。
1.3簡化正則表達式
實際命令 | 快捷命令 |
---|---|
[0-9](數字) | d |
[a-z][0-9][_](數字、字母、下劃線) | W |
0次或多次發生 | * |
至少一次發生 | + |
0次或1次發生 | ? |
1.4@符號的作用
我們經常在正則表達式字符串上加@字符,目的就是為了,不讓編譯器去解析其中的轉義字符,,而作為正則表達式語法(元字符)存在。
在這里插入代碼片
1.5正則表達式可以實現四種功能:
因為我看到其他博客說C#有很多方法可以用正則表達式,然后下面的一些例子,都用的是我認為,比較簡單的方法。大神勿噴,┗|`O′|┛ 嗷~~
溫馨提示:要運用下面的一些語句的要引入
using System.Text.RegularExpressions的命名空間
1,獲取:通過正則表達式,從字符串中獲取我們想要的部分
Regex reg = new Regex("[0-9]*");//這是搜索匹配0-9的數字
Console.WriteLine(reg.Match("12asda"));//最后提取出了12成功,嘻嘻
2,匹配:判斷給定的字符中是否符合正則表達式的過濾邏輯 你可以認為正則表達式表述了一個字符串的書寫規則
在這里的就得用從開頭到結尾都為的數字為True,出現一個不為數字輸出False
Regex reg = new Regex("^[0-9]*$");//判斷整個字符串是否都為數字
Console.WriteLine(reg.IsMatch("12asda"));//最后輸出False
Console.WriteLine(reg.IsMatch("124536346"));//最后輸出True
3, 分割
1、用字符串分隔:
using System.Text.RegularExpressions;
string str="aaajsbbbjsccc";
string[] sArray=Regex.Split(str,"js",RegexOptions.IgnoreCase);
foreach (string i in sArray) Response.Write(i.ToString() + "<br>");
輸出結果:
aaa
bbb
ccc
2、用多個字符來分隔:
string str="aaajbbbscccjdddseee";
string[] sArray=str.Split(new char[2] {'j','s'});
foreach(string i in sArray) Response.Write(i.ToString() + "<br>");
輸出結果:
aaa
bbb
ccc
ddd
eee
3、用單個字符來分隔:
string str="aaajbbbjccc";
string[] sArray=str.Split('j');
foreach(string i in sArray) Response.Write(i.ToString() + "<br>");
輸出結果:
aaa
bbb
ccc
4, 替換
string s = "aaa12342525";
Regex r = new Regex("[0-9]");//正則表達式規則
Console.WriteLine(r);//這個輸出為 [0-9] (我也不知道具體的原理)?
s = r.Replace(s, "9", 1);//第一個參數是字符串,第二個是正確匹配字符串的時候要替換的字符,第三個參數就是正確匹配正則表達式,然后替換的次數
Console.Write(s);//輸出aaa92342525
2.常用的正則表達式方法
2.1靜態方法IsMath
1,靜態方法IsMatch
IsMath(返回值是一個布爾類型,用于判斷指定的字符串是否與正則表達式字符中匹配,它有三個重載方法)
bool IsMatch(string input, string pattern);
參數:
input: 要搜索匹配項的字符串。
pattern:要匹配的正則表達式模式。
返回結果:如果正則表達式找到匹配項,則為true;否則,為false。
bool IsMatch(string inpdt, string pattern, RegexOptions options);
參數:
input: 要搜索匹配項的字符串。
pattern:要匹配的正則表達式模式。
options:枚舉值 的一一個按位組合, 這些枚舉值提供匹配選項。
返回結果:如果正則表達式找到匹配項,則為true;否則,為false。
bool IsMatch(string input, string pattern, RegexOptions options, TimeSpan matchTimeout);
參數:
input: 要搜索匹配項的字符串。
pattern:要匹配的正則表達式模式。
options:枚舉值的一個按位組合,這些枚舉值提供匹配選項。
matchTimeout:超時間隔
或
System.Text.RegularExpressions.Regex.InfiniteMatchTimeout 指示該方法不應超時。
返回結果:如果正則表達式找到匹配項,則為true;否則,為false。
2.1.1 關于參數RegexOptions
它是一個枚舉類型,有以下枚舉值
RegexOptions枚舉值 ? ? ? ? ?內聯標志 ? ? ? ? 簡單說明
ExplicitCapture ? ? ? ? ? ? ? n ? ? ? ? ? 只有定義了命名或編號的組才捕獲
IgnoreCase ? ? ? ? ? ? ? ? ? ?i ? ? ? ? ? 不區分大小寫
IgnorePatternWhitespace ? ? ? x ? ? ? ? ? 消除模式中的非轉義空白并啟用由#標記的注釋。
MultiLine ? ? ? ? ? ? ? ? ? ? m ? ? ? ? ? 多行模式,其原理是修改了^和$的含義
SingleLine ? ? ? ? ? ? ? ? ? ?s ? ? ? ? ? ?單行模式,和Multiline相對?
2.2靜態方法Match
Match的作用:使用指定的匹配選項在輸入字符串中搜索指定的正則表達式的第一個匹配項。返回一個包含有關匹配的信息的對象。同樣有三個重載方法,參數和IsMatch方法相同。
此外,在Regex類中, 還有一個同名的非靜態方法,適用于多個實例的情況下,效率更高- - 些。
下面的關于Match的三個重載方法
- 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靜態方法Matchs
靜態方法Matches,在指定的輸入字符串中搜索指定的正則表達式的所有匹配項。跟上面方法不同之處,就是這個方法返回的是所有匹配項,他同樣有三個重載方法,并且參數和Match方法完全相同此外,在Regex類中,還有一個同名的非靜態方法,適用于多個實例的情況下,效率更高- -些。
2.4 Replaces函數
我們知道正則表達式主要是實現驗證,提取,分割,替換字符的功能.Replace函數是實現替換功能的.
1 )Replace(string input,string pattern,string replacement)
//input是源字 符串,pattern是匹配的條件,replacement是替換的內容,就是把符合匹配條件pattern的內容轉換成它
比如string result = Regex.Replace("abc", "ab", "#" );
?//結果是#c,就是把字符串abc中的ab替換成#
2 )Replace(string input,string pattern,string replacement,RegexOptions options)
//RegexOptions是- 一個枚舉類型,用來做- -些設定
//前面用注釋時 就用到了RegexOptions.IgnorePatternWhitespace.如果在匹配時忽略大小寫就可以用
RegexOptions.lgnoreCase
比如string result = Regex.Replace("ABc", "ab", “#" ,RegexOptions.lgnoreCase);
補充:在 Regex 類中使用 IsMatch 方法判斷所匹配的字符串是否滿足正則表達式的要求
class Program
{
static void Main(string[] args)
{
Console.WriteLine("請輸入一個郵箱");
string email = Console.ReadLine();
Regex regex = new Regex(@"^(\w)+(\.\w)*@(\w)+((\.\w+)+)$");
if (regex.IsMatch(email))
{
Console.WriteLine("郵箱格式正確。");
}
else
{
Console.WriteLine("郵箱格式不正確。");
}
}
}
總結
原文鏈接:https://blog.csdn.net/qq_42980743/article/details/117369850
相關推薦
- 2022-05-31 關于k8s?使用?Service?控制器對外暴露服務的問題_云其它
- 2022-07-11 Linux刪除某個字母開頭的所有文件
- 2023-07-25 使用線程池異步執行定時任務
- 2022-08-13 beginInvke帶回調函數使用
- 2022-03-21 C語言打印正方形實例代碼_C 語言
- 2023-06-19 python中time模塊指定格式時間字符串轉為時間戳_python
- 2022-04-10 用python實現文件備份_python
- 2022-12-02 Android?使用?okhttp3和retrofit2?進行單文件和多文件上傳_Android
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支