string[] regexList = new string[] {
@"^(?<TickerPart1>[0-9A-Z])[ 0_]?(?<TickerPart2>[A-Z][0-9]) ?(COM(DTY)?|INDEX|IDX|IND|CURNCY|CUR|CLQ|ILQ|IDS)$",
@"^(?<Ticker>[0-9A-Z]{2,5}[A-Z][0-9]) ?(COM(DTY)?|INDEX|IDX|IND|CURNCY|CUR)$",
@"^(?<Ticker>[0-9A-Z]{2,5}[A-Z][0-9])$",
};
string externalId = "3ABZ9 COMDTY";
//测试例子
//A Z9 INDEX;AZ9 CUR;A_H9 IDX;A0H9COM;ABZ9 INDEX;3ABZ9 COMDTY;ABZ9;3ABZ9
foreach (string regexString in regexList)
{
if (Regex.IsMatch(externalId, regexString, RegexOptions.IgnoreCase))
{
Regex reg = new Regex(regexString, RegexOptions.IgnoreCase);
Match mc = reg.Match(externalId);
GroupCollection groups = mc.Groups;
string convertid = "";
foreach (string grn in reg.GetGroupNames())
{
if (grn.Contains("Ticker"))
          convertid += groups[grn].Value;
}
Console.WriteLine(convertid);
break;
}
}
Console.ReadLine();

以上例子将正则表达式中所有已经命名了的分组提取出来,此外,还可以利用正则表达式的Replace方法巧妙地将特定分组提取出来:

string result = "";
string id = "";
string reg = @"^(?<ticker>\d{4})$";
Regex regex = new Regex(reg);
if (regex.IsMatch(id))
{
result = Regex.Replace(id, reg, "${ticker}");
}
Console.WriteLine(result);
Console.ReadLine();

C#正则表达式根据分组命名取值的更多相关文章

  1. 关于oracle分组排序取值的问题

    按照 某字段分组 某字段排序 然后取出该分组中排第1条数据(每组只取一条) SELECT* FROM( SELECT a.*,row_number() over(partition by ORI_FE ...

  2. Oracle 中分组排序取值的问题

    整理一下排序: 建表语句:create table EXAM(  name    VARCHAR2(32),  subject VARCHAR2(32),  score   INTEGER)数据:IN ...

  3. python正则表达式(8)--分组、后向引用、前(后)向断言

    无名.有名分组 (1)正则表达式—无名分组 从正则表 达式的左边开始看,看到的第一个左括号“(”表示表示第一个分组,第二个表示第二个分组, 依次类推. 需要注意的是,有一个隐含的全局分组(就是索引号为 ...

  4. Django url配置 正则表达式详解 分组命名匹配 命名URL 别名 和URL反向解析 命名空间模式

    Django基础二之URL路由系统 本节目录 一 URL配置 二 正则表达式详解 三 分组命名匹配 四 命名URL(别名)和URL反向解析 五 命名空间模式 一 URL配置 Django 1.11版本 ...

  5. Django---路由系统,URLconf的配置,正则表达式的说明(位置参数),分组命名(捕获关键字参数),传递额外的参数给视图,命名url和url的反向解析,url名称空间

    Django---路由系统,URLconf的配置,正则表达式的说明(位置参数),分组命名(捕获关键字参数),传递额外的参数给视图,命名url和url的反向解析,url名称空间 一丶URLconf配置 ...

  6. 【学习笔记】Shell-1 变量:命名规范、变量赋值/取值/取消、局部变量/全局变量、预设环境变量

    1.Shell变量 从变量的实质上来说,变量名是指向一片用于存储数据的内存空间. Shell变量是一种弱类型的变量,即声明变量时不需要指定其变量类型,也不需求遵循“先声明再使用”的规定,想用即可用. ...

  7. 二、postman断言及正则表达式取值

    postman老式断言与新式断言总结:本文以微信开发者文档为例 断言处如图所示 一.老式断言 老式断言总结:var variables相当于代码中定义的变量,test['']=true;相当于pyth ...

  8. SQL获取分组后取某字段最大一条记录(求每个类别中最大的值的列表)

    获取分组后取某字段最大一条记录 方法一:(效率最高) select * from test as a where typeindex = (select max(b.typeindex) from t ...

  9. django系列3.1--url路由配置, 正则, 分发include, 分组命名匹配

    一.url配置 在django项目中urls.py文件中就是为这个url调用的view(视图)函数之间的映射表,来配置访问的一个url执行什么代码 默认的基本格式: from django.conf. ...

随机推荐

  1. Kali Linux又增加一个顶级域名kali.download

    Kali Linux又增加一个顶级域名kali.download 现阶段,kali.download只提供软件包和镜像下载.大家可以把该域名作为备选软件源来使用.形式如下: deb  http://k ...

  2. c++ 网络编程基础

    目录 c++ 网络编程 建立socket 绑定socket 建立连接 监听 服务器端接收 数据发送和接收 面向连接的数据发送 面向连接的数据接收 无连接的数据发送 无连接的数据接收 关闭socket ...

  3. Django 将APP存储至统一目录

    项目根目录下创建apps目录 mkdir apps 将应用移动到apps目录下 这里取消  search for references   ,open moved files in edito 选择 ...

  4. QML注意color小写

    1.用的时候大小写一样的 如: color="#3D3D3D" 和 color="#3d3d3d"都是同一个颜色 2.判断的时候,QML默认是小写 如:if(c ...

  5. 利用Python来远程控制肉鸡自由操作,下一个黑客大佬就是你

    利用Python来远程控制肉鸡自由操作,下一个黑客大佬就是你 直接开始主题 Server:控制端 Client:被控端 具体实现 然后当有肉鸡连接的时候我们需要获得肉鸡的socket,并且记录下来,以 ...

  6. http post 自动变成了options 怎么设置

  7. RabbitMQ官方教程一Hello World(GOLANG语言实现)

    介绍 RabbitMQ是消息中间件:它接受并转发消息. 您可以将其视为邮局系统:将要发送的邮件放在邮箱中时, 可以确保邮递员最终将邮件传递给收件人. 以此类推,RabbitMQ是一个邮箱,一个邮局和一 ...

  8. AMSR-E/AMSR-2数据介绍与下载

    1 AMSR-E数据介绍 The Advanced Microwave Scanning Radiometer for EOS (AMSR-E)是ADEOS-II 上的AMSR的改进版本, 是JAXA ...

  9. 爬虫存储介质之MongoDB存储

    常用数据库 mongoDB4.0: 下载:https://www.mongodb.com/ windows安装.Linux安装见: https://www.runoob.com/mongodb/mon ...

  10. c# 基础类型探索

    一.前言 本章节主要是探索 C# 的基本类型,一直以来我本人常用都是 int .double.bool.decimal.string 这五个类型,其对其它类型没有认真了解过.只是以前在学习的时候背了些 ...