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+)"; // 匹配中文字符和字母数字的组合

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

相关推荐
Chen—LSN11 小时前
C语言——文件操作(2)
c语言·开发语言·c++·经验分享·笔记·算法·c#
淡海水14 小时前
00-Unity和C#的GC剖析与对比-全篇导览
unity·c#·游戏引擎·gc
fogota15 小时前
C# `string.Join` 处理 `List<int>`
windows·c#
Behavior18 小时前
Unity 手游动态更换 App 图标 — Android 与 iOS 双端技术方案
c#·unity3d·游戏开发
周杰伦fans18 小时前
构建真正智能的CAD AI绘图代理
开发语言·人工智能·c#
UIU11421 小时前
递归算法与汉诺塔
c++·学习·算法·c#·递归
CSharp精选营1 天前
我用 ASP.NET Core 做了个水稻病虫害检查系统
c#·毕业设计·.net core·码农刚子
唐青枫1 天前
我用 C# 开发了一款电子发票自动整理工具
c#·.net
下页、再停留1 天前
【C#桌面客户端系列学习-2】在原来窗口基础上打开新窗口
c#·visual studio
Behavior1 天前
Unity 手游 iOS Deep Link 唤醒全流程:从 URL Scheme / Universal Links 到 C# 层参数投递
c#·unity3d·游戏开发