当前位置: 首页 > java >正文

C# 使用正则表达式

C# 使用正则表达式

/// <summary>
/// 测试正则表达式
/// </summary>
private static void test022()
{//检查是否匹配:Regex.IsMatch(currencyValue, pattern); 或 new Regex(...).IsMatch(currencyValue)string pattern = @"\d{3,}";bool b = Regex.IsMatch("98", pattern);Console.WriteLine(b);//Match方法返回第一个匹配项。例如,从一段文本中获取第一个符合电子邮件格式的字符串(简单示例)。string text = "我的邮箱是test@example.com,还有一个无效邮箱abc";Regex emailRegex = new Regex(@"[a-zA-Z0-9_.]+@[a-zA-Z0-9_.]+\.[a-zA-Z]+");Match match = emailRegex.Match(text);if (match.Success){Console.WriteLine("找到的邮箱是: " + match.Value);}//Matches方法返回所有匹配项的集合。例如,从一段文本中获取所有的数字。string numberText = "abc123def456";Regex numberRegex = new Regex(@"\d+");MatchCollection matches = numberRegex.Matches(numberText);foreach (Match m in matches){Console.WriteLine(m.Value);}//分组(Grouping):使用括号()可以将正则表达式的一部分进行分组。//分组可以用于提取匹配的特定部分或者在匹配过程中应用量词到一组字符上。//例如,在匹配日期格式(假设为yyyy-MM-dd)时,可以这样分组来提取年、月、日。string dateText = "2024-05-10";Regex dateRegex = new Regex(@"(\d{4})-(\d{2})-(\d{2})");Match match2 = dateRegex.Match(dateText);if (match2.Success){Console.WriteLine("年: " + match2.Groups[1].Value);Console.WriteLine("月: " + match2.Groups[2].Value);Console.WriteLine("日: " + match2.Groups[3].Value);}//零宽断言(Zero - width Assertions):这是一种特殊的匹配方式,它不消耗字符,只是在某个位置进行断言。//例如,(?=...)是正向肯定预查,它用于查找后面跟着特定模式的位置。假设要找到后面跟着abc的数字,可以这样写:\d(?=abc)//\d{2}(?=19)   // 匹配位置必须 ‌后面面紧跟着‌ "19" //\d{2}(?!19)   // 匹配位置必须 ‌后面面紧跟着‌ 不是"19" //(?<=19)\d{2}  // 匹配位置必须 ‌前面紧跟着‌ "19" //(?<!19)\d{2}  // 匹配前面不是"19"的两位数字string assertText = "1abc2def";Regex assertRegex = new Regex(@"\d(?=abc)");//找到后面跟着abc的数字//Regex assertRegex = new Regex(@"\d(?!abc)");//找到后面跟着非abc的数字//Regex assertRegex = new Regex(@"(?<=abc)\d");//找到前面跟着abc的数字//Regex assertRegex = new Regex(@"(?<!abc)\d");//找到前面跟着非abc的数字MatchCollection matches2 = assertRegex.Matches(assertText);foreach (Match ma in matches2){Console.WriteLine(ma.Value);//}Console.WriteLine("--------------------------------");// 替换replacevar source = "123abc456ABC789";// 静态方法//var newSource=Regex.Replace(source,"abc","|",RegexOptions.IgnoreCase);// 实例方法Regex regex = new Regex("abc", RegexOptions.IgnoreCase);var newSource = regex.Replace(source, "|");Console.WriteLine("原字符串:" + source);Console.WriteLine("替换后的字符串:" + newSource);}

参考:
https://blog.csdn.net/weixin_39604653/article/details/144316052
https://www.cnblogs.com/sosoft/p/regexMatch.html
https://www.runoob.com/csharp/csharp-regular-expressions.html

http://www.xdnf.cn/news/12396.html

相关文章:

  • React-表单受控绑定和获取Dom元素
  • 图片切割工具:智能分割长图并控制文件大小
  • Flask 核心概念速览:路由、请求、响应与蓝图
  • 吃透 Golang 基础:使用 encoding/json 实现 Golang 数据结构与 JSON 对象的转换
  • [论文阅读] 人工智能 | 大语言模型计划生成的新范式:基于过程挖掘的技能学习
  • FART 脱壳某大厂 App + CodeItem 修复 dex + 反编译还原源码
  • Halcon透视矩阵
  • 基于深度强化学习的Scrapy-Redis分布式爬虫动态调度策略研究
  • RNN和CNN使用场景区别
  • Windows平台RTSP/RTMP播放器C#接入详解
  • 11-Oracle 23ai Vector Embbeding和ONNX
  • 正则持续学习呀
  • Kerberos面试内容整理-开源 Kerberos 实现(MIT Kerberos、Heimdal 等)
  • STM32 控制12VRGB灯带颜色亮度调节,TFTLCD显示
  • 全面理解 Linux 内核性能问题:分类、实战与调优策略
  • 【vLLM 学习】Cpu Offload Lmcache
  • 硅基计划2.0 学习总结 陆 抽象类与接口
  • 电磁加热和铁锅温升的讨论
  • Tesseract配置参数详解及适用场景(PyTesseract进行OCR)
  • 【Survival Analysis】【机器学习】【3】 SHAP可解釋 AI
  • 6.6 计算机网络面试题
  • scikit-learn机器学习
  • 固态继电器与驱动隔离器:电力系统的守护者
  • Nuxt.js 布局系统详解:构建可复用页面框架
  • 豆包和deepseek 元宝 百度ai区别是什么
  • 3B模型大概占多少存储
  • My图床项目
  • [蓝桥杯]采油
  • 使用VTK还是OpenGL集成到qt程序里哪个好?
  • P1345 [USACO5.4] 奶牛的电信Telecowmunication