解析字符串以在C#中查找短语

时间:2013-02-15 21:12:57

标签: c# parsing

我正在尝试在字符串中查找一组数字和字母。

这是我正在看的短语:

Rx: RX15046522B Brand: LEVOTHYROXINE SODIUM Generic: LEVOTHYROXINE SODIUM  NDC: 00378180001 Barcode: 0378180001 Strength: 25 mcg Form: Tablet Color: orange Marking:  Shape: oblong

我想把这个部分变成另一个字符串:

NDC: 00378180001

我该怎么做?

4 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

如果它始终是" NDC:[数字]",您可以使用相当简单的正则表达式。

var re = new System.Text.RegularExpressions.Regex(@"NDC\:\s(\d{11})");
var phrase = "Rx: RX15046522B Brand: LEVOTHYROXINE SODIUM Generic: LEVOTHYROXINE SODIUM NDC: 00378180001 Barcode: 0378180001 Strength: 25 mcg Form: Tablet Color: orange Marking: Shape: oblong";
if (re.IsMatch(phrase))
{
    var match = re.Match(phrase);
    // entire NDC string
    context.Response.Write(match.Value);
    // just the number
    context.Response.Write(match.Groups[1].Value);
} 

答案 2 :(得分:1)

所以你正在寻找一个包含3个字母,冒号,空格和11个数字的模式?

正则表达式

[A-Z]{3}\:\s\d{11}

答案 3 :(得分:1)

        String S = "Rx: RX15046522B Brand: LEVOTHYROXINE SODIUM Generic: LEVOTHYROXINE SODIUM NDC: 00378180001 Barcode: 0378180001 Strength: 25 mcg Form: Tablet Color: orange Marking: Shape: oblong";

        Regex myRegex = new Regex(@"[0-9]+(?:\.[0-9]*)?", RegexOptions.Compiled);
        foreach (Match iMatch in myRegex.Matches(S))
        {
            if (iMatch.Value.Length==11)
            {
            MessageBox.Show(iMatch.Value);
            }
        }