C# 使用正则表达式和c提取这些URL的一部分#
我必须检查这两个url是否匹配一个模式(或者更准确地说是2)。如果是这样,我想提取部分数据 1) /selector/en/您想要的任何字符串链。aspx?FamiId=32 然后我需要将“en”和“32”提取到变量中。对我来说,正则表达式应该大致类似于/selector/{0}/您想要的任何字符串链。aspx?FamiId={1} 2) /selector/en/F/32/any-string-chain-you-want.html 其中en和32必须分配到变量中。因此: /选择器/{0}/F/{1}/any-string-chain-you-want.html {0}:2个字母的语言代码,如en、fr、nl、es,。。。 {1} :族id整数(2或3个数字),如12、38、124等,但不是1212 有什么办法可以实现吗 提前感谢, 罗兰案例1 案例2 用法C# 使用正则表达式和c提取这些URL的一部分#,c#,regex,C#,Regex,我必须检查这两个url是否匹配一个模式(或者更准确地说是2)。如果是这样,我想提取部分数据 1) /selector/en/您想要的任何字符串链。aspx?FamiId=32 然后我需要将“en”和“32”提取到变量中。对我来说,正则表达式应该大致类似于/selector/{0}/您想要的任何字符串链。aspx?FamiId={1} 2) /selector/en/F/32/any-string-chain-you-want.html 其中en和32必须分配到变量中。因此: /选择器/{0}/F
您应该在上查看本教程 您可以使用以下表达式:
\/selector\/([a-z]{2})\/.*\.aspx\?FamiId=([0-9]{2,3})
及
对于这种情况,学习一点正则表达式是很有用的。是一个免费的在线正则表达式构建工具。然而,我发现最有用的是这是正则表达式:
/selector/([a-z]{2})/.+?\.aspx\?FamiId=([0-9]+)
代码:
第二种情况的正则表达式:/selector/([a-z]{2})/F/([0-9]+)/.+?\.html
(代码不变)
好了。您可以尝试:
^/.*?/(\w{2})/(?:F/|.*?FamiId=)(\d{2,3}).*$
它适用于两个URL。您可以使用类似的内容
String urlSchema1= @"/selector/(<lang>\w\w)/.+\.aspx?FamiId=(<FamiId>\d+)";
Match mExprStatic = Regex.Match(inputString,urlSchema1, RegexOptions.IgnoreCase | RegexOptions.Singleline);
if (mExprStatic.Success || !string.IsNullOrEmpty(mExprStatic.Value))
{
String language = mExprStatic.Groups["lang"].Value;
String FamId = mExprStatic.Groups["FamId"].Value;
}
String urlSchema2= @"/selector/(<lang>\w\w)/F/(<FamId>\d+)/.+\.html";
Match mExprStatic = Regex.Match(inputString,urlSchema2, RegexOptions.IgnoreCase | RegexOptions.Singleline);
if (mExprStatic.Success || !string.IsNullOrEmpty(mExprStatic.Value))
{
String language = mExprStatic.Groups["lang"].Value;
String FamId = mExprStatic.Groups["FamId"].Value;
}
String urlSchema1=@”/selector/(\w\w)/.+\.aspx?FamiId=(\d+);
Match mExprStatic=Regex.Match(inputString,urlSchema1,RegexOptions.IgnoreCase | RegexOptions.Singleline);
if(mExprStatic.Success | | |!string.IsNullOrEmpty(mExprStatic.Value))
{
String language=mExprStatic.Groups[“lang”].Value;
字符串FamId=mExprStatic.Groups[“FamId”].Value;
}
字符串urlSchema2=@“/selector/(\w\w)/F/(\d+/+\.html”;
Match mExprStatic=Regex.Match(inputString,urlSchema2,RegexOptions.IgnoreCase | RegexOptions.Singleline);
if(mExprStatic.Success | | |!string.IsNullOrEmpty(mExprStatic.Value))
{
String language=mExprStatic.Groups[“lang”].Value;
字符串FamId=mExprStatic.Groups[“FamId”].Value;
}
\/selector\/([a-z]{2})\/F\/([0-9]{2,3})\/.*\.html
/selector/([a-z]{2})/.+?\.aspx\?FamiId=([0-9]+)
var regex = new Regex(@"/selector/([a-z]{2})/.+?\.aspx\?FamiId=([0-9]+)");
var test = "/selector/en/any-string-chain-you-want.aspx?FamiId=32";
foreach (Match match in regex.Matches(test))
{
var lang = match.Groups[1].Value;
var id = Convert.ToInt32(match.Groups[2].Value);
Console.WriteLine("lang: {0}, id: {1}", lang, id);
}
string str = @"/selector/en/any-string-chain-you-want.aspx?FamiId=32";
Match m = Regex.Match(str, @"/selector/(\w{2})/.+\.aspx\?FamiId=(\d{2,3})");
string result = String.Format(@"/selector/{0}/F/{1}/any-string-chain-you-want.html", m.Groups[1].Value, m.Groups[2].Value);
^/.*?/(\w{2})/(?:F/|.*?FamiId=)(\d{2,3}).*$
String urlSchema1= @"/selector/(<lang>\w\w)/.+\.aspx?FamiId=(<FamiId>\d+)";
Match mExprStatic = Regex.Match(inputString,urlSchema1, RegexOptions.IgnoreCase | RegexOptions.Singleline);
if (mExprStatic.Success || !string.IsNullOrEmpty(mExprStatic.Value))
{
String language = mExprStatic.Groups["lang"].Value;
String FamId = mExprStatic.Groups["FamId"].Value;
}
String urlSchema2= @"/selector/(<lang>\w\w)/F/(<FamId>\d+)/.+\.html";
Match mExprStatic = Regex.Match(inputString,urlSchema2, RegexOptions.IgnoreCase | RegexOptions.Singleline);
if (mExprStatic.Success || !string.IsNullOrEmpty(mExprStatic.Value))
{
String language = mExprStatic.Groups["lang"].Value;
String FamId = mExprStatic.Groups["FamId"].Value;
}