步步为营-18-正则表达式
说明:一个工具Regulator需要用到
1 元字符
. 匹配任意单个字符
* 匹配前面内容出现0或多次
+ 匹配前面内容出现1或多次
? 匹配前面内容出现0或1次; 将贪婪模式转化为非贪婪模式
贪婪模式 李琪(liqi);史昱(shiyu);李志强(lizhiqiang);李晶(ljing) \((.+)\) (liqi);史昱(shiyu);李志强(lizhiqiang);李晶(ljing)
非贪婪模式 李琪(liqi);史昱(shiyu);李志强(lizhiqiang);李晶(ljing) \((.+?)\) (liqi)(shiyu)(lizhiqiang)(ljing)
| 或者z|food 匹配z或者food
() a:可以改变优先级;b:可以分组
[] 匹配[]中国的字符出现的一次.如[0-9]
{} 匹配前面内容出现的次数; a:指定次数如zo{2}o出现2次 ;a:指定次数如zo{2,4} o出现至少2次,最多4次;
^ a:以某些字符串开头.如: ^abc 以abc开头 b:取反
$ 以某些字符串结尾.
2 简写表达式
\d 代表一个数字,等于[0-9];
\D 代表一个非数字,等于[^0-9]
\s 代表换行符,tab键等空白字符
\S 代表非空白字符
\w 匹配字母 数字 下划线 汉字等
\W ^w
练习:
0:匹配括号中的内容
李琪(liqi);史昱(shiyu);李志强(lizhiqiang);李晶(ljing) 匹配为 liqi;shiyu;lizhiqiang;ljing
![](/assets/blank.gif)
![](/assets/blank.gif)
<script type="text/javascript">onload = function () {var str = "李琪(liqi);史昱(shiyu);李志强(lizhiqiang);李晶(ljing)";var reg = /([^\(\)]+)(?=\))/g;//var result = str.match(reg);//此时result是数组//var Result2 = result.join(";");//此时Result2 是 liqi;shiyu;lizhiqiang;ljingvar result = str.match(reg).join(";");alert(result);}</script>
小括号
[] 中的内容 /([^\(\)]+)(?=\))/g
0.1 去掉括号中的内容在C# 代码中
string st = "陈霓;蔡齐貌;蔡梅芳(caimf);蔡文婷(caiwt)";
Regex reg = new Regex(@"(\(.*?\))");
st.FastnessCCUser = reg.Replace(st, "");
输出结果 "陈霓;蔡齐貌;蔡梅芳;蔡文婷"
1:从文件中提取文件名如:C:\abc\123\test.txt
先在regulator中测试
然后放在程序中
![](/assets/blank.gif)
![](/assets/blank.gif)
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 Code
2:匹配年月日
代码中
![](/assets/blank.gif)
![](/assets/blank.gif)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks;namespace 正则表达式 {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]
![](/assets/blank.gif)
![](/assets/blank.gif)
static void Main(string[] args){//string date = @"192.168.100.5[port=21,type=ftp]";string date = @"192.168.100.5[port=21]";Match mc = Regex.Match(date, @"(?<ip>\d{3}(\.\d{1,3}){3})\[(?<port>port=[0-9]{1,5})(,(?<type>(type=\w+)))?");if (mc.Success){Console.WriteLine(mc.Groups["ip"].Value);Console.WriteLine(mc.Groups["port"].Value);Console.WriteLine(mc.Groups["type"].Value);}Console.Read();}
View Code
4:匹配[]的内容
![](/assets/blank.gif)
![](/assets/blank.gif)
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
转载于:https://www.cnblogs.com/YK2012/p/6719985.html
步步为营-18-正则表达式相关推荐
- java 正则匹配 sql星号,18. 正则表达式:开头、结尾、任意一个字符、星号和加号匹配...
Re: MySQL 查询与高级查询(多表.嵌套和正则表达式) (查询的能力,亦显示DBA的功力) ============================================= 数据库管理 ...
- python进阶18正则表达式
原创博客链接:python进阶18正则表达式 正则基础知识 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ^`:匹配行首 `$`:匹配结尾 `*`:( ...
- c++ 正则表达式_Java入门 - 语言基础 - 18.正则表达式
1.概述 正则表达式定义了字符串的模式. 正则表达式可以用来搜索.编辑或处理文本. 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别. 正则表达式实例 一个字符串其实就是一个简单的正则表达 ...
- JS的正则表达式[收藏]
JS的正则表达式 //校验是否全由数字组成 代码 function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) return ...
- JS正则表达式使用详解
简介 简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具.其作用如下: 测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式 ...
- java中正则表达式并集_对Java中正则表达式的一些理解
2016-12-11 22:26:18 正则表达式的意义:正则表达式是一个字符串处理工具,可以对字符串进行查找/提取/分割/替换等等,也可以对用户输入的内容进行匹配. 常用的预定义字符就不解释了,网上 ...
- JS正则表达式详解(转)
开篇,还是得说说 ^ 和 $ 他们是分别用来匹配字符串的开始和结束,以下分别举例说明 "^The": 开头一定要有"The"字符串; "of desp ...
- js正则表达式详细教程
//校验是否全由数字组成 [code] function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) return fals ...
- JS正则表达式详解2
JS的正则表达式详解 //校验是否全由数字组成 代码 function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) retu ...
- js正则表达式 验证手机号,email地址和邮政编码等等等等。。。
//手机号码的验证(13开头18开头和158,159开头,共11位) var re; var ss=document.getElementById('textbox3').val; re= /^(13 ...
最新文章
- 快速解决mongodb出现id重复问题
- 花音机器人_【扑杀花音攻略组】超弩级光机器人攻略
- JavaWeb:前端开发基础
- 多元函数法曲率和主曲率的几何解释
- Linux命令之文本分析工具awk
- Excel下拉框多选(支持再次选择已选项会取消选择)
- jenkins插件镜像源
- delphi连接mysql不用添加dsn_Delphi]delphi中动态创建MySQL的ODBC连接 .
- EXCEL常用查询函数?查询函数的妙用
- win8电脑怎么把计算机快捷方式,Win8怎么隐藏桌面快捷方式小箭头_Win8去掉快捷方式箭头-192路由网...
- DotNet 程序集加载了不匹配版本的依赖程序
- jQuery 插件——免费版
- 大学生程序设计邀请赛(华东师范大学)A
- 从0到1000万:哔哩哔哩直播架构演进史
- CCIE一年后的心语-------寄WOLF实验室的兄弟
- 通过新浪天气api查询天气
- java基于quasar实现协程池
- AD域控的搭建与加入AD域
- Hive Later View用法
- java编写活期储蓄帐目管理_数据结构课程设计--活期储蓄帐目管理系统
热门文章
- 你不知道的shell用法和脚本,简单强大
- jsfiddle网站介绍
- pycharm如何修改背景成护眼色和字体大小
- 【leetcode】1032. Stream of Characters
- paramiko基础
- Chromium 组件DotNetBrowser V1.12发布 | Chromium引擎升级到版本60
- 《C和C++程序员面试秘笈》——1.9 如何理解C++是面向对象化的,而C是面向过程化的...
- ajax 对404的处理
- Scala 中的函数式编程基础(一)
- C# winform treeview节点重命名