正则表达式之分组

本文介绍了一种利用正则表达式从HTML中提取特定信息的方法,并提供了具体实例,包括匹配产品信息、提取URL参数、获取中文内容等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<input type="submit" name="CurList:CurTable:_ctl1:Button1" value="Add to Cart" id="CurList_CurTable__ctl1_Button1" class="add" />
    Gold 1,000
    <br />
    <span class="sale">
     $24.95
    </span>
<input[^>]*?type=""submit""[^>]*?>/s+(?<goldAmend>[^<]*?)<br[^>]*?>/s+<span[^>]*?>/s+(?<price>[^<]*?)</span>
----------------------------
<strong><a href="http://www.test.com/Virtuelle-Gueter/World-of-Warcraft/Deutsche-Server/Aegwynn/1000-WOW-Gold-auf-Aegwynn::593.html?MSsid=htdirbqj1tle1ggu6krnbtoqf3" class="standard_link">1000 WOW Gold auf Aegwynn</a></strong>
</td>
</tr>
<tr>
<td colspan="2">
<p>
Die von Ihnen georderten 1000 Gold auf Aegwynn werden nach Eingang der Zahlung an Ihren Charakter ermittelt. Der Transfer erfolgt per Ingamepost.
</p>
</td>
</tr>
<tr>
<td align="right" class="main" colspan="2">
<strong>
<span style="line-height:200%"> ab   11,71 EUR</span>
</strong>

<strong><a[^>]*?>(?<goldAmend>[^<]*?)</a></strong>/s+</td>/s+</tr>/s+<tr>/s+<td[^>]*?>/s+<p>(?<noget>[^<]*?)</p>/s+</td>/s+</tr>/s+<tr>/s+<td[^>]*?>/s+<strong>/s+<span[^>]*?>(?<priceA>[^<]*?)</span>
------------------------------
 MatchCollection mc = Regex.Matches(myStr, @"<td[^>]*?><h3[^>]*?><a[^>]*?>(?<goldAmend>[^<]*?)</a></h3><div[^>]*?></div></td>(?<noget>[^<]*?)<td[^>]*?><del>(?<noget>[^<]*?)</del><span>(?<price>[^<]*?)<", RegexOptions.IgnoreCase);
                     
if (mc.Count > 0)
{
                      
      foreach (Match m in mc)
      {
            string _goldAmend = m.Groups["goldAmend"].Value.ToString().Trim();
      }
}

如以下是一个以#的正则替换例子

                    MatchCollection mc = Regex.Matches(Strsql, @"/w|and|exec|insert|select|delete|update|count|master|truncate|declare|char\(|chr\(|mid\(|/w", RegexOptions.Compiled | RegexOptions.IgnoreCase);
                    if (mc.Count > 0)
                    {


                        foreach (Match m in mc)
                        {
                            string str1 = m.Groups[0].Value.ToString();
                            Strsql = Strsql.Replace(str1, "");
                        }
                    }

--------------------------

http://www.com.com/reg.aspx?pid=1000&sid=100258

pid=(?<pid>[^&]*)&sid=(?<sid>[^&]*)

取出pid,sid参数值

[?=&](?<key>[^&]*=[^&]*)

可以列出所有的参数列表

--------------------------

贪婪匹配与非贪婪或最小匹配

通过在 '*'、 '+' 或 '?' 限定符后放置 '?',该表达式就从贪婪匹配转为了非贪婪或最小匹配。

--txt begin--

<div class="grayline">
<p class="graybttopbg"></p>
<div class="jobs_txt">
<p class="txt_font">深圳市XX有限公司成立于1999年8月,是一家拥有产综合开发经验、专注于城市精品项目开发的专产开发运营企功开发了广庭圳翠半岛、雅建成立深圳豪宅开发、物业管理、高端酒店运营、产业新城多元产业为主体的集团化企业。目前重点经营有铂店墅群综合体及深圳与花园等城市更新项目,已拥有数十家子公司、近市拥有近百万平米土地储备。</p>
<p class="pot2"></p><p class="txt_font1">公司网站:<a href="http://www.www.net.cn" target="_blank">http://www.www.net.cn</a></p>
</div>
</div>
<div class="graybott">
<span><img src="http://img01.51jobcdn.com/im/2009/graybl.gif" align="left"/></span>
<span><img src="http://img01.51jobcdn.com/im/2009/graybr.gif" align="right"/></span>
</div>
</div>

--txt end--

 用 <p class="txt_font">(?<companydesc>[\s\S]*)</p> 匹配的话如下

<p class="txt_font">深圳市XX有限公司成立于1999年8月,是一家拥有产综合开发经验、专注于城市精品项目开发的专产开发运营企功开发了广庭圳翠半岛、雅建成立深圳豪宅开发、物业管理、高端酒店运营、产业新城多元产业为主体的集团化企业。目前重点经营有铂店墅群综合体及深圳与花园等城市更新项目,已拥有数十家子公司、近市拥有近百万平米土地储备。</p>
<p class="pot2"></p><p class="txt_font1">公司网站:<a href="http://www.www.net.cn" target="_blank">http://www.www.net.cn</a></p>

 用 <p class="txt_font">(?<companydesc>[\s\S]*?)</p> 匹配的话如下

<p class="txt_font">深圳市XX有限公司成立于1999年8月,是一家拥有产综合开发经验、专注于城市精品项目开发的专产开发运营企功开发了广庭圳翠半岛、雅建成立深圳豪宅开发、物业管理、高端酒店运营、产业新城多元产业为主体的集团化企业。目前重点经营有铂店墅群综合体及深圳与花园等城市更新项目,已拥有数十家子公司、近市拥有近百万平米土地储备。</p>

------

从html字符串中提取中文

原需求是这样的,内容是一段html,所以里面有各类的html标签和style,但有时需要从里面取出一段文字作为简介之类的,处理如下:
	/// <summary>
        /// 取内容中的中文字符
        /// </summary>
        /// <param name="contents"></param>
        /// <param name="length"></param>
        /// <returns></returns>
        public static string GetChinese(string contents,int length)
        {
            var str = contents;
            try
            {
                string regex = @"[\u4e00-\u9fa5]|[\(\)\《\》\——\;\,\。\“\”\!\-\:\ ]|[0123456789]";
                //这里可能加入其它要替换的字符
                str = GetStrByRegx(str, regex).Replace("宋体", "").Replace("楷体", "").Replace("黑体", "");
                if (str.Length > length)
                {
                    str = str.Substring(0, length);
                }
            }
            catch (Exception e)
            {
                Log.Error(e.Message + e.StackTrace);
                return "";
            }
            return str;
        }
		
	/// <summary>
        /// 从字符串中取出与正则匹配的字符串
        /// </summary>
        /// <param name="inputStr">源字符串</param>
        /// <param name="strPattern">正则表达式 如:/\\d{2,20}/</param>
        /// <returns>string</returns>
        public static string GetStrByRegx(string inputStr, string strPattern)
        {
            var retStr = "";
            try
            {
                MatchCollection mc = Regex.Matches(inputStr, strPattern, RegexOptions.IgnoreCase);
                if (mc.Count > 0)
                {
                    foreach (Match m in mc)
                    {
                        retStr += m.Value;
                    }
                }
            }
            catch
            {
            }
            return retStr;
        }


--- end ---


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值