首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#,使用正则表达式或字符串拆分提取字符串

C#,使用正则表达式或字符串拆分提取字符串
EN

Stack Overflow用户
提问于 2016-08-05 22:01:02
回答 1查看 82关注 0票数 0

读完这个问题的答案后:C# regex pattern to extract urls from given string - not full html urls but bare links as well,我想知道从文档中提取urls的最快方法是使用正则表达式匹配还是使用字符串拆分方法。

因此,您有一个包含html文档的字符串,并希望提取urls。

正则表达式的方法是:

代码语言:javascript
复制
Regex linkParser = new Regex(@"\b(?:https?://|www\.)\S+\b", RegexOptions.Compiled | RegexOptions.IgnoreCase);
string rawString = "house home go www.monstermmorpg.com nice hospital http://www.monstermmorpg.com this is incorrect url http://www.monstermmorpg.commerged continue";
foreach(Match m in linkParser.Matches(rawString))
    MessageBox.Show(m.Value); 

和字符串拆分方法:

代码语言:javascript
复制
string rawString = "house home go www.monstermmorpg.com nice hospital http://www.monstermmorpg.com this is incorrect url http://www.monstermmorpg.commerged continue";
var links = rawString.Split("\t\n ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Where(s => s.StartsWith("http://") || s.StartsWith("www.") || s.StartsWith("https://"));
foreach (string s in links)
    MessageBox.Show(s);

哪种方法是最有效的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-05 23:07:09

拆分速度更快。下面是一些你可以用来测试的代码:dotnetfiddle link

代码语言:javascript
复制
using System;
using System.Diagnostics;
using System.Linq;
using System.Text.RegularExpressions;

public class Program
{

    public void Main()
    {
        Stopwatch sw = new Stopwatch();

        sw.Start();

        for (int i=0; i < 500; i++)
        {
            Regex linkParser = new Regex(@"\b(?:https?://|www\.)\S+\b", RegexOptions.Compiled | RegexOptions.IgnoreCase);
            string rawString = "house home go www.monstermmorpg.com nice hospital http://www.monstermmorpg.com this is incorrect url http://www.monstermmorpg.commerged continue";
        }

        sw.Stop();

        var test1Time = sw.ElapsedMilliseconds;


        sw.Reset();
        sw.Start();

        for (int i=0; i < 500; i++)
        {
            string rawString = "house home go www.monstermmorpg.com nice hospital http://www.monstermmorpg.com this is incorrect url http://www.monstermmorpg.commerged continue";
            var links = rawString.Split("\t\n ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Where(s => s.StartsWith("http://") || s.StartsWith("www.") || s.StartsWith("https://"));  
        }

        sw.Stop();

        var test2Time = sw.ElapsedMilliseconds;

        Console.WriteLine("Regex Test: " + test1Time.ToString());
        Console.WriteLine("Split Test: " + test2Time.ToString());
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38791141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档