我目前在我的C# / .NET Core应用程序中使用这个正则表达式来从一个Markdown文件中解析HTTP、HTTPS和FTP URL:
static readonly Regex _urlRegex = new Regex(@"(((http|ftp|https):\/\/)+[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?)");
void UpdateGitHubReadme(string gitHubRepositoryName, string gitHubReadmeText)
{
var updatedMarkdown = _urlRegex.Replace(gitHubReadmeText, x => HandleRegex(x.Groups[0].Value, gitHubRepositoryName.Replace(".", "").Replace("-", "").ToLower(), "github", gitHubUser.Alias));
//handle updated markdown
}
static string HandleRegex(in string url, in string repositoryName, in string channel, in string alias)
{
//handle url
}
我希望更新这个正则表达式,以便忽略markdown代码块和代码片段内部的URL。
示例1
以下URL应该被忽略,因为它在一个代码块中:
` ` `
{
"name": "Brandon",
"blog" : "https://codetraveler.io"
}
` ` `
示例2
以下URL应该被忽略,因为它在代码片段中:
`curl -I https://www.keycdn.com `
(*SKIP)(*F)
一样跳过(“忽略”)匹配的功能。您需要使用代码。 - Wiktor Stribiżew