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.pswp.cn/news/908692.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LLMs之RLVR:《Absolute Zero: Reinforced Self-play Reasoning with Zero Data》翻译与解读

LLMs之RLVR&#xff1a;《Absolute Zero: Reinforced Self-play Reasoning with Zero Data》翻译与解读 导读&#xff1a;Absolute Zero范式通过让模型在没有外部数据的情况下&#xff0c;自主提出和解决任务&#xff0c;实现了推理能力的显著提升。Absolute Zero Reasoner (AZ…

信息最大化(Information Maximization)

信息最大化在目标域无标签的域自适应任务中&#xff0c;它迫使模型在没有真实标签的情况下&#xff0c;对未标记数据产生高置信度且类别均衡的预测。此外&#xff0c;这些预测也可以作为伪标签用于自训练。 例如&#xff0c;在目标域没有标签时&#xff0c;信息最大化损失可以…

AUTOSAR实战教程--标准协议栈实现DoIP转DoCAN的方法

目录 软件架构 关键知识点 第一:PDUR的缓存作用 第二:CANTP的组包拆包功能 第三:流控帧的意义 配置过程 步骤0:ECUC模块中PDU创建 步骤1:SoAD模块维持不变 步骤2:DoIP模块为Gateway功能添加Connection ​步骤3:DoIP模块为Gateway新增LA/TA/SA ​步骤4:PDUR模…

设备驱动与文件系统:05 文件使用磁盘的实现

从文件使用磁盘的实现逻辑分享 我们现在讲第30讲&#xff0c;内容是文件使用磁盘的具体实现&#xff0c;也就是相关代码是如何编写的。上一节我们探讨了如何从字符流位置算出盘块号&#xff0c;这是文件操作磁盘的核心。而这节课&#xff0c;我们将深入研究实现这一核心功能的…

【PCIe总线】-- inbound、outbound配置

PCI、PCIe相关知识整理汇总 【PCIe总线】 -- PCI、PCIe相关实现 由之前的PCIe基础知识可知&#xff0c;pcie的组成有&#xff1a;RC&#xff08;根节点&#xff09;、siwtch&#xff08;pcie桥&#xff09;、EP&#xff08;设备&#xff09;。 RC和EP&#xff0c;以及EP和EP能…

20250607在荣品的PRO-RK3566开发板的Android13系统下实现长按开机之后出现插入适配器不会自动启动的问题的解决

20250607在荣品的PRO-RK3566开发板的Android13系统下实现长按开机之后出现插入适配器不会自动启动的问题的解决 2025/6/7 17:20 缘起&#xff1a; 1、根据RK809的DATASHEET&#xff0c;短按开机【100ms/500ms】/长按关机&#xff0c;长按关机。6s/8s/10s 我在网上找到的DATASHE…

AIGC 基础篇 Python基础 02

1.bool类型 书接上回&#xff0c;我们上次最后讲了三大数据类型&#xff0c;除了这三个之外&#xff0c;Python也有bool类型&#xff0c;也就是True和False。 a 2 print(a1) print(a2) 像这里&#xff0c;输出的内容第一个是False&#xff0c;因为a的值为2&#xff0c;而第…

华为大规模——重塑生产力

华为大模型通过以下几个方面重塑生产力&#xff1a; 提供强大算力支持 华为致力于构建领先的昇腾人工智能算力平台&#xff0c;推出高性能昇腾AI集群&#xff0c;支持月级长期稳定训练&#xff0c;可靠性业界领先。同时打造开放的昇腾计算平台&#xff0c;兼容主流算子、框…

iOS上传应用包错误问题 “Invalid bundle. The “UIInterfaceOrientationPortrait”“

引言 在开发 iOS 应用的整个生命周期中&#xff0c;打包上传到 App Store 是一个至关重要的步骤。每一次提交&#xff0c;Xcode 都会在后台执行一系列严格的校验流程&#xff0c;包括对 Info.plist 配置的检查、架构兼容性的验证、资源完整性的审查等。如果某些关键项配置不当…

【计算机组成原理】缓冲技术SPOOLing技术

缓冲技术 单缓冲区&#xff1a;初始&#xff1a;工作区满&#xff0c;缓冲区空 每块用时max(处理时间, 输入时间) 传送时间双缓冲区&#xff1a;先装1&#xff0c;1满才装2。初始&#xff1a;工作区空&#xff0c;1空&#xff0c;2满 每块用时max(处理时间, 传送时间) 输入时…

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献&#xff1a; stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下&#xff0c;文章也主…

web端rtmp推拉流测试、抽帧识别计数,一键式生成巡检报告

本文旨在实现无人机城市交通智慧巡检中的一个模块——无人机视频实时推拉流以及识别流并在前端展示&#xff0c;同时&#xff0c;统计目标数量以及违停数量&#xff0c;生成结果评估&#xff0c;一并发送到前端展示。对于本文任何技术上的空缺&#xff0c;可在博主主页前面博客…

基于自适应虚拟谐波阬的光储VSG并网电流谐波抑制模型

“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 模型简介 此模型完全复现于《基于自适应虚拟阻抗的光储并网系统谐波抑制策略》-程静 此并网系统模型的核心控制为虚拟同步发电机&#xff08;VSG&#xff09;控制&#xff0c;采用基于混合广义积分器的谐波信号提取…

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…

【会员专享数据】2017-2024年我国分省的10米精度土地覆盖数据

土地覆盖数据是我们在各项研究中都非常常用的数据&#xff0c;之前我们分享过2017-2024年全球范围的10米精度土地覆盖数据&#xff08;均可查看之前的文章获悉详情&#xff09;&#xff01;该数据提供瓦片形式&#xff0c;也就是全球的数据没有拼成一张图&#xff0c;很多小伙伴…

通过css实现正方体效果

效果 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>/* css实…

Java并发编程-理论基础

Java并发编程-理论基础 1、什么是进程&#xff1f; 进程&#xff08;Process&#xff09;是计算机中的程序关于某数据集合上的一次运行活动&#xff0c;是系统进行资源分配的基本单位&#xff0c;是操作系统结构的基础。在早期面向进程设计的计算机结构中&#xff0c;进程是程…

Tornado WebSocket实时聊天实例

在 Python 3 Tornado 中使用 WebSocket 非常直接。你需要创建一个继承自 tornado.websocket.WebSocketHandler 的类&#xff0c;并实现它的几个关键方法。 下面是一个简单的示例&#xff0c;演示了如何创建一个 WebSocket 服务器&#xff0c;该服务器会接收客户端发送的消息&a…

模块化架构下的前端调试体系建设:WebDebugX 与多工具协同的工程实践

随着前端工程化的发展&#xff0c;越来越多的项目采用模块化架构&#xff1a;单页面应用&#xff08;SPA&#xff09;、微前端、组件化框架等。这类架构带来了良好的可维护性和复用性&#xff0c;但也带来了新的调试挑战。 本文结合我们在多个模块化项目中的真实经验&#xff…

高考:如何合理选择学科、专业以及职业

如何合理选择学科、专业以及职业 一、自我认知&#xff1a;明确自身兴趣与优势&#xff08;一&#xff09;兴趣探索&#xff08;二&#xff09;能力评估&#xff08;三&#xff09;价值观与目标 二、外部调研&#xff1a;深入了解学科、专业与职业&#xff08;一&#xff09;学…