急---- 求正则表达式转换,高手请进!
第一个:
判断一个string 是否符使用文件路径ABC(紧跟主域名后),如果不是则加上路径ABC,其余部分保持不变。
比如
https://www.domain.com/ABC/edit.aspx&...
//这个无需转换
https://www.domain.com/user/abc.aspx&...
//这个需要转换成https://www.domain.com/ABC/user/abc.aspx&...
https://www.domain.com/ABC.html
//这个需要转换成https://www.domain.com/ABC/ABC.html
非常感谢!
[解决办法]
string pattern = @"(?is)(?<=https?://[^/]+/)(?!abc/)";
[解决办法]
str=Regex.Replace(str,@"(?i)(?<=\.com/)((?!abc\.)[^/])+",m=>m.Value.ToUpper()=="ABC"?"":"ABC/"+m.Value);
[解决办法]
string format = @"https://www.(\w+).com/ABC/(.+)?";
Regex g = new Regex(format);
string mystr = @"https://www.baidu.com/AB/a.aspx";
if (g.IsMatch(mystr))
{
Console.WriteLine("yes");
}
else
{
string t = @"https://www.(\w+).com";
Regex g2 = new Regex(t);
string url= g2.Match(mystr).Groups[0].Value;
Console.WriteLine("no");
Console.WriteLine(url);
int index = mystr.IndexOf(url)+url.Length;
string newstr= mystr.Insert(index, @"/ABC");
Console.WriteLine(newstr);
}
Console.Read();
void Main()
{
string[] ary= {
"https://www.domain.com/ABC/edit.aspx&..",
"https://www.domain.com/user/abc.aspx&... ",
"https://www.domain.com/ABC.html"
};
foreach(var str in ary)
Console.WriteLine("{0}\t{1}",str,Regex.Replace(str,@"(?i)(?<=\.com/)[^/]+(?=/
[解决办法]
$)",m=>m.Value.ToUpper()=="ABC"?"ABC":"ABC/"+m.Value));
}
https://www.domain.com/ABC/edit.aspx&..https://www.domain.com/ABC/edit.aspx&..
https://www.domain.com/user/abc.aspx&... https://www.domain.com/ABC/user/abc.aspx&...
https://www.domain.com/ABC.htmlhttps://www.domain.com/ABC/ABC.html
List<string> list = new List<string>();
list.Add("https://www.domain.com/ABC/edit.aspx&... ");
list.Add("https://www.domain.com/user/abc.aspx& ");
list.Add("https://www.domain.com/ABC.html ");
Regex reg = new Regex(@"(?is)(https?://([^./]*\.)+com/)(?!ABC/)");
foreach (string s in list)
{
Console.WriteLine(reg.Replace(s,"$1ABC/"));
}
/****结果****
https://www.domain.com/AB
https://www.domain.com/AB
https://www.domain.com/AB
请按任意键继续. . .
****结果****/