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.Groups[1].Value); // 输出捕获组的内容
        }
    }
}
```

解释:
- `@"..."` 是C#中的verbatim string literal,允许字符串跨多行且内部不需要转义字符。
- `\w+` 匹配一个或多个字母数字字符(等同于[a-zA-Z0-9_])。如果你想匹配中文和字母数字,可以使用`[\u4e00-\u9fa5a-zA-Z0-9]+`。
- `MatchCollection` 是一个包含所有匹配项的集合。
- `match.Groups[1].Value` 用于获取第一个捕获组的内容,即“国药准字”后面的内容。

完整示例(包括中文字符和字母数字):
如果需要匹配包含中文字符和字母数字的组合,可以修改正则表达式如下:
string pattern = @"国药准字([\u4e00-\u9fa5a-zA-Z0-9]+)"; // 匹配中文字符和字母数字的组合
这样,无论后面的字符是中文字符还是字母数字,都能被正确匹配。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值