正则表达式 - 找到类似[Attribute:GUID]的匹配项

时间:2016-03-28 21:34:48

标签: c# regex

我有一大串html,其中有几个令牌符合以下格式:

[Attribute:GUID]

因此,例如,有许多这样的令牌:[Attribute:5c1670bb-b6ac-4fb5-92ab-9e0ea4bf72e8]

我怎样才能获得所有比赛?我刚开始只使用[Attribute:d+],但显然[符号是我无法使用的正则表达式令牌,但我需要搜索它

4 个答案:

答案 0 :(得分:1)

  

我有一大串html,其中包含几个令牌   格式:

[Attribute:GUID]
     

所以例如,有很多这样的令牌:   [Attribute:5c1670bb-b6ac-4fb5-92ab-9e0ea4bf72e8]

     

我怎样才能获得所有比赛?我刚刚开始使用   [SiteAttribute:d+],但显然[符号是正则表达式令牌   我不能使用,但我需要搜索它

如果您需要搜索文字“[”,请使用正则表达式中的转义值“\ [”。

例如(类似于“SiteAttribute”示例):

"\[SiteAttribute:\d.*\]"

或者:

"\[Attribute:\d.*\]"

答案 1 :(得分:1)

您必须像这样逃避[]

正则表达式: \[Attribute:[a-z0-9-]+\]

<强> Regex101 Demo

答案 2 :(得分:1)

这取决于你的属性。如果它可以是任何&#34;字&#34;由字母字符组成,它是:

\[[A-Za-z]+:[a-z0-9\-]+\]

答案 3 :(得分:0)

请注意,每个GUID模式都无效,因此应考虑模式检查。

以下方法可以采用两种模式,强制在模式中检查GUID有效性,并在不检查GUID模式有效性的情况下调用。

private List<string> GetListOfValidAttributeGuids(string strInput, bool blGuidValidityCheck = true)
{
    string strRegExAttrGuid = new Regex(@"\[Attribute:[a-zA-Z0-9-]+\]").ToString();
    MatchCollection lstMatchedAttrGuid = Regex.Matches(strInput, strRegExAttrGuid);
    List<string> lstMatchedAttrGuidValue = lstMatchedAttrGuid.Cast<Match>().Select(m => m.Value).ToList();

    if(blGuidValidityCheck)
    {
        string strRegExGuid = new Regex(@":[a-zA-Z0-9\-]+").ToString();
        List<string> lstValidMatchedAttrGuid = new List<string>();

        foreach (string lst in lstMatchedAttrGuidValue)
        {
            MatchCollection validMatchedAttrGuid = Regex.Matches(lst, strRegExGuid);
            string validMatchedAttrGuidValue = validMatchedAttrGuid.Cast<Match>().Select(match => match.Value).Single().Substring(1);

            Guid guidTemp;
            bool isValidGuid = Guid.TryParse(validMatchedAttrGuidValue, out guidTemp);

            if (isValidGuid)
                lstValidMatchedAttrGuid.Add(lst);
        }

        return lstValidMatchedAttrGuid;
    }

    return lstMatchedAttrGuidValue;
}

例如,查看以下两个方法调用:

string strInput = "In yek attribute mo'tabar hast: [Attribute:5c1670bb-b6ac-4fb5-92ab-9e0ea4bf72e8] " +
                    " va in yeki mo'tabar nist: [Attribute:7A7CE329-1338-4505-88B1-EA6B28BDE264E]";

List<string> call_01 = GetListOfValidAttributeGuids(strInput, false);
List<string> call_02 = GetListOfValidAttributeGuids(strInput, true);

此处call_01存储了两个元素,但call_02一个元素。