C#:取的多个药品批准文号中的一个

在C#中,如果想匹配一个字符串,比如"国药准字HJ20090910 国药准字HJ20090911",并找出其中所有以"国药准字"开头的部分,可以使用正则表达式(Regex)来实现这一功能。

方法1:使用正则表达式匹配所有以"国药准字"开头的子串

可以使用`Regex.Matches`方法来找到所有匹配的子串。这里是如何做的:

using System;

using System.Text.RegularExpressions;

class Program

{

static void Main()

{

string text = "国药准字HJ20090910 、国药准字HJ20090911";

string pattern = @"国药准字\w+"; // 使用\w+来匹配任何字母数字字符序列

MatchCollection matches = Regex.Matches(text, pattern);

foreach (Match match in matches)

{

Console.WriteLine(match.Value);

}

}

}

方法2:使用正则表达式捕获组(如果只关心"国药准字"后面的内容)

如果想要捕获"国药准字"后面的特定内容,比如字母和数字组合,可以使用捕获组:

using System;

using System.Text.RegularExpressions;

class Program

{

static void Main()

{

string text = "国药准字Jsabc 国药准字jsbsc";

string pattern = @"国药准字(\w+)"; // 使用(\w+)来捕获字母数字字符序列

MatchCollection matches = Regex.Matches(text, pattern);

foreach (Match match in matches)

{

Console.WriteLine(match.Groups1.Value); // 输出捕获组的内容

}

}

}

```

解释:

  • `@"..."` 是C#中的verbatim string literal,允许字符串跨多行且内部不需要转义字符。

  • `\w+` 匹配一个或多个字母数字字符(等同于a-zA-Z0-9_)。如果你想匹配中文和字母数字,可以使用`\\u4e00-\\u9fa5a-zA-Z0-9+`。

  • `MatchCollection` 是一个包含所有匹配项的集合。

  • `match.Groups1.Value` 用于获取第一个捕获组的内容,即"国药准字"后面的内容。

完整示例(包括中文字符和字母数字):

如果需要匹配包含中文字符和字母数字的组合,可以修改正则表达式如下:

string pattern = @"国药准字(\\u4e00-\\u9fa5a-zA-Z0-9+)"; // 匹配中文字符和字母数字的组合

这样,无论后面的字符是中文字符还是字母数字,都能被正确匹配。

相关推荐
Coder_Shenshen8 小时前
罗克韦尔ACD工程归档离线变量树解析
算法·c#
寂寞的船14 小时前
【Unity知识速递】第10期 Unity GC 零分配实战:从 UnityEngine.Pool 到手动 GC 控制的全链路优化
jvm·unity·c#·游戏引擎·lucene
1-1=017 小时前
C# 数据结构和特殊类型
数据结构·c#·.net·.netcore
波力海苔夹心脆6753 天前
C# WPF 资源字典详解:ResourceDictionary、MergedDictionaries 与自定义控件案例
开发语言·c#·wpf·入门教程·resource·资源字典
AI导出鸭PC端3 天前
Perplexity批量导出没有PDF模式?AI导出鸭插件补上最后一块拼图
人工智能·pdf·c#·ai导出鸭
Risehuxyc3 天前
C# 选用更流行的语言版本
c#
淡海水4 天前
09-04-内存-Unity原生对象生命周期
unity·c#·游戏引擎·gc
吴可可1234 天前
富怡CAD二次开发指南
c#
1-1=04 天前
C# IO和序列化
c#·.net·.netcore
寂寞的船4 天前
【Unity Bug挑战】第10期 SerializeReference 内存泄漏之谜
unity·c#·游戏引擎·bug