步步为营-18-正则表达式
說明:一個(gè)工具Regulator需要用到
1?元字符
?.?匹配任意單個(gè)字符
*?匹配前面內(nèi)容出現(xiàn)0或多次
+?匹配前面內(nèi)容出現(xiàn)1或多次
??匹配前面內(nèi)容出現(xiàn)0或1次;?將貪婪模式轉(zhuǎn)化為非貪婪模式
貪婪模式???? 李琪(liqi);史昱(shiyu);李志強(qiáng)(lizhiqiang);李晶(ljing)? \((.+)\)? (liqi);史昱(shiyu);李志強(qiáng)(lizhiqiang);李晶(ljing)
非貪婪模式 李琪(liqi);史昱(shiyu);李志強(qiáng)(lizhiqiang);李晶(ljing)? \((.+?)\)? (liqi)(shiyu)(lizhiqiang)(ljing)
|?或者z|food?匹配z或者food
()?a:可以改變優(yōu)先級;b:可以分組
[] 匹配[]中國的字符出現(xiàn)的一次.如[0-9]
{} 匹配前面內(nèi)容出現(xiàn)的次數(shù);?a:指定次數(shù)如zo{2}o出現(xiàn)2次?;a:指定次數(shù)如zo{2,4} o出現(xiàn)至少2次,最多4次;
^?a:以某些字符串開頭.如:?^abc?以abc開頭?b:取反
$?以某些字符串結(jié)尾.
2?簡寫表達(dá)式
\d?代表一個(gè)數(shù)字,等于[0-9];
\D?代表一個(gè)非數(shù)字,等于[^0-9]
\s?代表換行符,tab鍵等空白字符
\S?代表非空白字符
\w?匹配字母 數(shù)字?下劃線?漢字等
\W???^w
練習(xí):
0:匹配括號中的內(nèi)容
李琪(liqi);史昱(shiyu);李志強(qiáng)(lizhiqiang);李晶(ljing)?匹配為 liqi;shiyu;lizhiqiang;ljing
<script type="text/javascript">onload = function () {var str = "李琪(liqi);史昱(shiyu);李志強(qiáng)(lizhiqiang);李晶(ljing)";var reg = /([^\(\)]+)(?=\))/g;//var result = str.match(reg);//此時(shí)result是數(shù)組//var Result2 = result.join(";");//此時(shí)Result2 是 liqi;shiyu;lizhiqiang;ljingvar result = str.match(reg).join(";");alert(result);}</script> 小括號[]?中的內(nèi)容? /([^\(\)]+)(?=\))/g
0.1 去掉括號中的內(nèi)容在C# 代碼中
string st = "陳霓;蔡齊貌;蔡梅芳(caimf);蔡文婷(caiwt)";
Regex reg = new Regex(@"(\(.*?\))");
st.FastnessCCUser = reg.Replace(st, "");
輸出結(jié)果 "陳霓;蔡齊貌;蔡梅芳;蔡文婷"
1:從文件中提取文件名如:C:\abc\123\test.txt
先在regulator中測試
?
然后放在程序中
string path = @"C:\abc\123\test.txt";Match mc = Regex.Match(path, @".+\\([a-zA-Z0-9]+\.[a-zA-Z]+)");if (mc.Success){Console.WriteLine(mc.Groups[1].Value);}Console.Read(); View Code2:匹配年月日
代碼中
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks;namespace 正則表達(dá)式 {class Program{static void Main(string[] args){string date = @"June 26, 2017";Match mc = Regex.Match(date, @"([a-zA-Z]+)\s+([0-9]+),+\s+([0-9]+)");if (mc.Success){Console.WriteLine(mc.Groups[1].Value);Console.WriteLine(mc.Groups[2].Value);Console.WriteLine(mc.Groups[3].Value);}Console.Read();}} } View Code
3?匹配IP地址 192.168.100.5[port=21,type=ftp]或者192.16.10.10[port=21]
?4:匹配[]的內(nèi)容
string businessCondition = publish.BusinessCondition;string pattern = @"([^\:\]]+)(?=\])";Regex regex = new Regex(pattern, RegexOptions.IgnoreCase);MatchCollection matchs = regex.Matches(businessCondition);if (matchs!=null&&matchs.Count>0){foreach (var item in matchs){if (item!=null){string wordKey = item.ToString().ToLower();conditionWords.Add(wordKey);}}} View Code?
轉(zhuǎn)載于:https://www.cnblogs.com/YK2012/p/6719985.html
總結(jié)
以上是生活随笔為你收集整理的步步为营-18-正则表达式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GDOI2017第二轮模拟day1 总结
- 下一篇: 20162328蔡文琛week07