说明:一个工具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

 <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中测试

然后放在程序中

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:匹配年月日

代码中

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]

 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:匹配[]的内容

 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-正则表达式相关推荐

  1. java 正则匹配 sql星号,18. 正则表达式:开头、结尾、任意一个字符、星号和加号匹配...

    Re: MySQL 查询与高级查询(多表.嵌套和正则表达式) (查询的能力,亦显示DBA的功力) ============================================= 数据库管理 ...

  2. python进阶18正则表达式

    原创博客链接:python进阶18正则表达式 正则基础知识 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ^`:匹配行首 `$`:匹配结尾 `*`:( ...

  3. c++ 正则表达式_Java入门 - 语言基础 - 18.正则表达式

    1.概述 正则表达式定义了字符串的模式. 正则表达式可以用来搜索.编辑或处理文本. 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别. 正则表达式实例 一个字符串其实就是一个简单的正则表达 ...

  4. JS的正则表达式[收藏]

    JS的正则表达式 //校验是否全由数字组成 代码 function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) return ...

  5. JS正则表达式使用详解

    简介 简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具.其作用如下:  测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式 ...

  6. java中正则表达式并集_对Java中正则表达式的一些理解

    2016-12-11 22:26:18 正则表达式的意义:正则表达式是一个字符串处理工具,可以对字符串进行查找/提取/分割/替换等等,也可以对用户输入的内容进行匹配. 常用的预定义字符就不解释了,网上 ...

  7. JS正则表达式详解(转)

    开篇,还是得说说 ^ 和 $ 他们是分别用来匹配字符串的开始和结束,以下分别举例说明 "^The": 开头一定要有"The"字符串; "of desp ...

  8. js正则表达式详细教程

    //校验是否全由数字组成 [code] function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) return fals ...

  9. JS正则表达式详解2

    JS的正则表达式详解 //校验是否全由数字组成 代码 function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) retu ...

  10. js正则表达式 验证手机号,email地址和邮政编码等等等等。。。

    //手机号码的验证(13开头18开头和158,159开头,共11位) var re; var ss=document.getElementById('textbox3').val; re= /^(13 ...

最新文章

  1. 快速解决mongodb出现id重复问题
  2. 花音机器人_【扑杀花音攻略组】超弩级光机器人攻略
  3. JavaWeb:前端开发基础
  4. 多元函数法曲率和主曲率的几何解释
  5. Linux命令之文本分析工具awk
  6. Excel下拉框多选(支持再次选择已选项会取消选择)
  7. jenkins插件镜像源
  8. delphi连接mysql不用添加dsn_Delphi]delphi中动态创建MySQL的ODBC连接 .
  9. EXCEL常用查询函数?查询函数的妙用
  10. win8电脑怎么把计算机快捷方式,Win8怎么隐藏桌面快捷方式小箭头_Win8去掉快捷方式箭头-192路由网...
  11. DotNet 程序集加载了不匹配版本的依赖程序
  12. jQuery 插件——免费版
  13. 大学生程序设计邀请赛(华东师范大学)A
  14. 从0到1000万:哔哩哔哩直播架构演进史
  15. CCIE一年后的心语-------寄WOLF实验室的兄弟
  16. 通过新浪天气api查询天气
  17. java基于quasar实现协程池
  18. AD域控的搭建与加入AD域
  19. Hive Later View用法
  20. java编写活期储蓄帐目管理_数据结构课程设计--活期储蓄帐目管理系统

热门文章

  1. 你不知道的shell用法和脚本,简单强大
  2. jsfiddle网站介绍
  3. pycharm如何修改背景成护眼色和字体大小
  4. 【leetcode】1032. Stream of Characters
  5. paramiko基础
  6. Chromium 组件DotNetBrowser V1.12发布 | Chromium引擎升级到版本60
  7. 《C和C++程序员面试秘笈》——1.9 如何理解C++是面向对象化的,而C是面向过程化的...
  8. ajax 对404的处理
  9. Scala 中的函数式编程基础(一)
  10. C# winform treeview节点重命名