正则表达式用于字符串提取

需要从文本中抽取字符串,例如,从下面的xml文本中抽取link和title的值,

<RssFeeds>

                                <link>http://www.codeguru.com/icom_includes/feeds/codeguru/rss-all.xml</link>

                                <title>CodeGuru.com</title>   

                                <description>something</description>

                                </RssFeeds>

                                

                                <RssFeeds>

                                <link>http://lifehacker.com/index.xml</link>

                                <title>Lifehacker</title>

                                <description>something</description>

                                </RssFeeds> 


可以用如下的C#代码实现:

        private void buttonRegular_Click(object sender, EventArgs e)
        {
            String myString = @"<RssFeeds>
                                <link>http://www.codeguru.com/icom_includes/feeds/codeguru/rss-all.xml</link>
                                <title>CodeGuru.com</title>   
                                <description>something</description>
                                </RssFeeds>
                                
                                <RssFeeds>
                                <link>http://lifehacker.com/index.xml</link>
                                <title>Lifehacker</title>
                                <description>something</description>
                                </RssFeeds> ";
            Regex linkRegex = new Regex(@"<link>\s*(?<link>[^<]+)\s*</link>",
                                System.Text.RegularExpressions.RegexOptions.Compiled);
            Regex titleRegex = new Regex(@"<title>\s*(?<title>[^<]+)\s*</title>", 
                                System.Text.RegularExpressions.RegexOptions.Compiled);

            Match mLink = linkRegex.Match(myString);
            while (mLink.Success)
            {
                string link = mLink.Groups["link"].Value;
                MessageBox.Show(link);
                mLink = mLink.NextMatch();
            }

            Match mTitle = titleRegex.Match(myString);

            while (mTitle.Success)
            {
                string title = mTitle.Groups["title"].Value;
                MessageBox.Show(title);
                mTitle = mTitle.NextMatch();
            }
        }

可以遍历整个文本,直到提取完所有需要的内容,这里要注意Match类有Groups的概念,有了这个概念可以抽取正则表达式中定义的一个group,group用()来确定。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值