我有一大串html,其中有几个令牌符合以下格式:
[Attribute:GUID]
因此,例如,有许多这样的令牌:[Attribute:5c1670bb-b6ac-4fb5-92ab-9e0ea4bf72e8]
我怎样才能获得所有比赛?我刚开始只使用[Attribute:d+]
,但显然[
符号是我无法使用的正则表达式令牌,但我需要搜索它
答案 0 :(得分:1)
我有一大串html,其中包含几个令牌 格式:
[Attribute:GUID]
所以例如,有很多这样的令牌:
[Attribute:5c1670bb-b6ac-4fb5-92ab-9e0ea4bf72e8]
我怎样才能获得所有比赛?我刚刚开始使用
[SiteAttribute:d+]
,但显然[
符号是正则表达式令牌 我不能使用,但我需要搜索它
如果您需要搜索文字“[”,请使用正则表达式中的转义值“\ [”。
例如(类似于“SiteAttribute”示例):
"\[SiteAttribute:\d.*\]"
或者:
"\[Attribute:\d.*\]"
答案 1 :(得分:1)
答案 2 :(得分:1)
这取决于你的属性。如果它可以是任何"字"由字母字符组成,它是:
\[[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
有一个元素。