使用正则表达式获取格式ABC-XXX-XXX

时间:2014-02-21 12:29:54

标签: c# regex pattern-matching

我的数据如下

CVE-2011-0573,
CVE-2011-0606,
(CVE-2011-0565)
CVE-2011-0598,
CVE-2011-0593.
((CVE-2011-0593.)

我只需要获取格式“ABC-XXX-XXX”。我使用的RegEx模式是“[A-Z]{3}-[0-9]{4}-[0-9]{3,10}”。

另外还有一个用C#编写的方法

public String RemoveChars(String message)
{
    // The pattern for an expression
    String charPattern = "[A-Z]{3}-[0-9]{4}-[0-9]{3,10}";
    // Create a regex object with the pattern
    Regex objRegExp = new Regex(charPattern);
    // Replace unwanted char by empty string - TO BE FIXED(?)
    message = objRegExp.Replace(message, String.Empty);
    // Return the message without unwanted chars
    return message;
}

因此,如果我现在运行此代码,对于“CVE-2011-0573,”,它会返回“,”而不是“CVE-2011-0573”。

您能否帮我修一下C#代码,使其按照结果“CVE-2011-0573”的方式工作?

非常感谢!

3 个答案:

答案 0 :(得分:2)

使用objRegExp.Match(message)来获得您的匹配。

或在您的示例中:

string output = "";
var matches = objRegExp.Matches(message);
foreach (var match in matches)
{
    output+=match;
}
return output;

处理多个匹配。

答案 1 :(得分:1)

使用此功能:

public String RemoveChars(String message)
        {
            // The pattern for an expression
            String charPattern = @"[A-Z]{3}-\d{4}-\d{4}";
            // Create a regex object with the pattern
            message = Regex.Match(message, charPattern).Value;
            // Return the message without unwanted chars
            return message;
        }

此外,如果您需要多个匹配项,请使用Regex.Matches

答案 2 :(得分:0)

根据这个:CLICK

这应该有效:

   String charPattern ="[.,()]"