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

正则表达式匹配实现

直接上代码

using Microsoft.AspNetCore.Mvc;
using System.Text.RegularExpressions;namespace SaaS.OfficialWebSite.Web.Controllers
{public class RegController : Controller{public IActionResult Index(){return View();}[HttpPost]public IActionResult TestRegex([FromBody] RegexTestRequest request){if (request == null || string.IsNullOrEmpty(request.Pattern) || string.IsNullOrEmpty(request.Text)){return BadRequest(new { message = "正则表达式模式和测试文本不能为空" });}try{var options = RegexOptions.None;if (request.Options.IgnoreCase)options |= RegexOptions.IgnoreCase;if (request.Options.Multiline)options |= RegexOptions.Multiline;if (request.Options.Singleline)options |= RegexOptions.Singleline;if (request.Options.ExplicitCapture)options |= RegexOptions.ExplicitCapture;var regex = new Regex(request.Pattern, options);var matches = regex.Matches(request.Text);var response = new RegexTestResponse{IsMatch = matches.Count > 0,Matches = new List<MatchResult>()};foreach (Match match in matches){var matchResult = new MatchResult{Value = match.Value,Index = match.Index,Length = match.Length,Groups = new List<GroupResult>()};// 跳过第一个组(整个匹配)for (int i = 1; i < match.Groups.Count; i++){var group = match.Groups[i];if (group.Success){matchResult.Groups.Add(new GroupResult{Name = regex.GroupNameFromNumber(i),Value = group.Value,Index = group.Index,Length = group.Length});}}response.Matches.Add(matchResult);}return Ok(response);}catch (ArgumentException ex){return BadRequest(new { message = $"无效的正则表达式: {ex.Message}" });}catch (Exception ex){return StatusCode(500, new { message = $"发生错误: {ex.Message}" });}}}public class RegexTestRequest{public string Pattern { get; set; }public string Text { get; set; }public RegexOptionsDto Options { get; set; }}public class RegexOptionsDto{public bool IgnoreCase { get; set; }public bool Multiline { get; set; }public bool Singleline { get; set; }public bool ExplicitCapture { get; set; }}public class RegexTestResponse{public bool IsMatch { get; set; }public List<MatchResult> Matches { get; set; }}public class MatchResult{public string Value { get; set; }public int Index { get; set; }public int Length { get; set; }public List<GroupResult> Groups { get; set; }}public class GroupResult{public string Name { get; set; }public string Value { get; set; }public int Index { get; set; }public int Length { get; set; }}
}

运行效果:正则表达式匹配

http://www.lqws.cn/news/524017.html

相关文章:

  • Boosting:从理论到实践——集成学习中的偏差征服者
  • Prompt:面向目标的提示词
  • WeakAuras Lua Script [ICC BOSS 12 - The Lich King]
  • Objective-C面向对象编程:类、对象、方法详解(保姆级教程)
  • 自动驾驶数据特征提取实战:用Python打开智能驾驶的新视角
  • 深入理解残差网络(ResNet):原理与PyTorch实现
  • Mysql数据库操作大全万字详解
  • 【Redis】Redis的下载安装和配置
  • 检查StringBuilder是否包含字符串
  • ARM内核之CMSIS
  • 【机器学习】非参数贝叶斯回归方法 GPR
  • ipfs在windows下载和安装
  • JSON框架转化isSuccess()为sucess字段
  • C++(智能指针)
  • Liunx操作系统笔记2
  • linux-修改文件命令(补充)
  • IT运维效率提升: 当IT监控遇上3D可视化
  • 三步实现B站缓存视频转MP4格式
  • 记一次AWS 中RDS优化费用使用的案例
  • Postman鉴权动态传参?对比脚本变量vs环境变量!
  • 理论加案例,一文读懂数据分析中的分类建模
  • 通过pyqt5学习MVC
  • 代理型 AI 重塑营销格局:国产 R²AIN SUITE 如何破解数据与技术瓶颈,实现 AI 赋能全链路提效
  • VScode常用快捷键【个人总结】
  • 2024年AEI SCI1区TOP,强化学习人工兔优化算法RLTARO+山地森林地形无人机编队路径规划,深度解析+性能实测
  • Dify、n8n、Coze、FastGPT 和 Ragflow 对比分析:如何选择最适合你的智能体平台?
  • Wpf的Binding
  • 数据库1.0
  • Python 爬虫入门:从数据爬取到转存 MySQL 数据库
  • 【Ansible】Ansible入门