目前在做的项目是一个类似于太平洋的产品报价系统(其实说白了就是一个仿太平洋的网站,产品数据全是摘录自太平洋),产品的参数分参数分类(主要参数、性能参数...),参数名称(型号、芯片组、CPU接口...),数据库里已经录好了产品的参数分类及参数名称,目前正在对着太平洋的产品库进行产品的参数录入,之前都是复制一个参数值了再粘贴到我们的网站里然后点击确定了进行参数录入的,某天觉得这种方法蛮麻烦,几万种产品的要录参数到什么时候啊,于是自己看了下太平洋的产品参数,如下图:
[img]http://niunan.iteye.com/upload/picture/pic/23789/d85c77f0-df6a-37b4-8fe4-c29461921466.jpg[/img]
好像没发觉什么特别的地方,然后自己如下图的方式一次性把参数全复制了粘贴到记事本里,
[img]http://niunan.iteye.com/upload/picture/pic/23787/035cbf06-d51d-3e82-a472-6678b4108920.jpg[/img]
[img]http://niunan.iteye.com/upload/picture/pic/23785/29e02c32-bf88-31ec-868e-2e3c1874e08b.jpg[/img]
呵呵,发觉什么了没,每条参数名称和参数值占一行,而且他们之间都是用空格格开的,(大部分是),这样的话我们可以通过一些字符串的处理,以空格为分界符把参数名称和参数值拆开,这样就得到最后我们所要的结果了,就能批量的把参数值插入到数据库里了。
试了一下用普通的字符串处理,觉得蛮麻烦的,于是就想到了正则表达式,也正好借此机会试试.NET中如何使用正则表达式吧,先把正则表达式写出来吧。最近从网上无意中找到的一个验证正则表达式的好软件(RegexBuddy),个人觉得蛮好用的,打开后界面如下:
[img]http://niunan.iteye.com/upload/picture/pic/23791/685ee524-646d-3c26-a8db-21a6f103fe39.jpg[/img]
注意画圈圈的那三个按钮,分配是 匹配、替换、分割,我们要用到的是替换按钮
点击Replace 和 Test 按钮,然后输入正则表达式及粘贴复制出来的参数名称及参数值,瑞在Test按钮上面那个框框里输入 $1 → $2 ,如下图:
[img]http://niunan.iteye.com/upload/picture/pic/23803/def11fe1-35a6-3efa-b045-9206dc51054e.jpg[/img]
熟悉正则的朋友应该知道,(.+) (.+)匹配 1个以上的任意字符后有个空格,空格之后再有1个以上的任意字符,加上括号是给匹配的结果进行分组$1和$2就表示第一组和第二组,下面的测试参数会变色就说明匹配我们写的正则表达式,每个匹配的结果用不同的颜色相隔表示,上面表示每一行都匹配我们写的正则表达式,然后我们如下图按下那个按钮,
[img]http://niunan.iteye.com/upload/picture/pic/23801/9a9bb941-1515-30df-8413-73164153a29e.jpg[/img]
得到下图结果
[img]http://niunan.iteye.com/upload/picture/pic/23797/8b7dd9a6-3864-35b6-9293-c338f6c6b9d3.jpg[/img]
大家看到什么了,匹配出来了吧,不过有点不对劲,我们要的是把第一个空格之前的分为第一组,而匹配的结果却是把最后一个空格之前的分为第一组了,这就是正则表达式[color=blue]贪婪匹配与懒惰匹配[/color]的区别,下图是我改了正则表达式之后匹配的结果,注意我把 PCI Express插槽 改成 PCI-Express插槽 ,把空格换成一个减号,这样才不至于替换后的结果是PCI → *****。
[img]http://niunan.iteye.com/upload/picture/pic/23807/e55e4b58-4522-3fd1-9d96-7a441fcc3cf9.jpg[/img]
这样就得到了我们想要的结果,至于那个 PCI-Express插槽 ,我能想到的方法也只能是在更新数据库的时候判断一下,如果参数名称是 PCI-Express插槽 ,则更新数据库中 字段为 PCI Express插槽 的参数值。
既然正则表达式写出来了,那下面就来做ASPX页面的代码编写,在这里我只是把分析出的结果输出到界面上,新建ASPX页面,拉入一个文本框,一个按钮,一个标签,如图:
[img]http://niunan.iteye.com/upload/picture/pic/23811/d86bf579-062d-3cf8-be7c-64e09f14713d.jpg[/img]
然后ASPX.CS的源码如下:

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Text.RegularExpressions;  // 要使用正则表达式得导入此包

public partial class regTest : System.Web.UI.Page{    protected void Page_Load(object sender, EventArgs e)    {

    }

    // 分析参数    protected void Button1_Click(object sender, EventArgs e)    {        Label1.Text = "";        string str = TextBox1.Text;        // 建立正则对象,可以加些杂七杂八的参数,如忽略大小写之类的        // 在这里我没加,想知道如何加的自己去GOOGLE        Regex reg = new Regex(@"(.+?) (.+)");        // 匹配,把结果放在MatchCollection集合里        MatchCollection mc = reg.Matches(str);        // 遍历集合,取出分组,即参数名称和参数值        foreach (Match m in mc)        {            Label1.Text += m.Groups[1].Value + " → " + m.Groups[2].Value + "<br />";        }    }}

最后再预览页面,测试一下就得到分析出的结果了。
[img]http://niunan.iteye.com/upload/picture/pic/23813/b7b968f9-03f6-34ca-a70f-74988ed26590.jpg[/img]
最后就是把分析出的结果与数据库中已经有的参数名称想比较,相同的就插入相应的参数值,只要注意一个那个 PCI EXPRESS插槽 的问题就行了。
发个图文并茂的贴子还真难啊,足足弄了2个半小时,真是个消磨时间的好方法!!!
以前装了个动易的CMS,发现里面有个“采集”的功能,好像是个自动收集新闻的玩意吧,不知道能不能“采集”到太平洋上的产品参数和对应的值,那样的话就太爽啦。。
现在我的这方法只是复制参数后进行字符串的拆分处理之类的,之前还得先找到相应的产品的,要是能自动采集产品的相关信息那就爽啦。。呵呵 。。
源码传上来给大家。。
此外本人有《精通正则表达式》和《实战正则表达式》两部视频,《精通》用的是JAVA语言来讲正则,《实战》用的是C#来讲正则,有需要的朋友可发邮件到164423073@qq.com索取,也可索取那个RegexBuddy的软件,个人觉得这软件太有用啦。。。 :D :D :D

在.NET中使用正则表达式对太平洋产品参数进行分析!相关推荐

  1. note-在VisualStudio中使用正则表达式

    前言:本来昨天已经写了,但由于意外给搞丢失了,由于刚刚看了这篇文章知道了一些真相:现在的心理状态已经和昨天不一样了,昨天是满心的高兴,对VisualSduio很有好感,当时自认为是没有把正则学好,所以 ...

  2. 软件测试工程师必看:如何使用JMeter中的正则表达式?

    如果你在JMeter脚本中看到这样一些符号:(.*?)(\d+),你是否会以为程序出现了乱码?拆开来看每个符号似乎都有固定的含义,组合在一起竟成了令人费解的天书.这些神秘符号究竟蕴含了哪些强大的功能, ...

  3. 正则表达式引擎 源码 c#_如何在C#中构建正则表达式引擎

    正则表达式引擎 源码 c# 更新: (Update:) See my Unicode enabled offering here 在这里查看启用Unicode的产品 先决条件 (Prerequisit ...

  4. ASP.NET 中的正则表达式

    引言 Microsoft®.NET Framework 对正则表达式的支持是一流的,甚至在 Microsoft® ASP.NET 中也有依赖正则表达式语言的控件.本文介绍了深入学习正则表达式的基础知识 ...

  5. 52 JavaScript中的正则表达式

    技术交流QQ群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder的程序人生 1.什么是正则表达式 正则表达是(regular expression)是用于匹配字符串中 ...

  6. java中正则表达式 ?=_Java中的正则表达式

    正则表达式: 正则表达式(英语:Regular Expression,在代码中常简写为regex). 正则表达式是一个字符串,使用单个字符串来描述.用来定义匹配规则,匹配一系列符合某个句法规则的字符串 ...

  7. vbs字符串正则_VBscript中的正则表达式

    在VBscript中,正则表达式对象就是RegExp对象.RegExp对象有3个属性:Pattern属性,设置或返回被搜索的正则表达式模式. Global属性,指明在整个搜索字符串时模式是全部匹配还是 ...

  8. linux命令行 正则,在Linux命令行中使用正则表达式

    上一节我们介绍过grep命令在搜索文本信息时的基本用法,其实,grep命令还可以配合正则表达式执行更加复杂的搜索操作. 本节我们将对如何在Linux命令行中使用正则表达式进行介绍. 所谓正则表达式,就 ...

  9. js中match、replace方法中使用正则表达式

    为什么80%的码农都做不了架构师?>>>    js中match.replace方法中使用正则表达式 (2012-06-29 14:23:37) 转载▼ 标签: 字符串 飞雪 正则表 ...

最新文章

  1. 资源 | 李飞飞、吴恩达、Bengio等人的15大顶级深度学习课程,你收集全了吗?
  2. 将Unreal4打包后的工程嵌入到Qt或者桌面中
  3. 了解JavaScript
  4. Q4,IT人从来没输过!
  5. spring 项目中集成 Protocol Buffers 示例
  6. 浅谈大前端的代表技术及其影响,值得我们思考
  7. 四、Web服务器——Session Cookie JSP入门 学习笔记
  8. 密码可见_无密码身份认证即将来临
  9. Android基础教程(六)之------- 参数的传递(Bundle)
  10. HTML设置地址栏收藏夹图标
  11. 大疆飞行模拟(DJI Flight Simulator)软件的使用
  12. 计算机绘图作业西南交大,西南交大计算机绘图A 离线作业.doc
  13. 【独家】微软中国开始挖人,看中搜索人才
  14. 信息安全人员关注网站
  15. 零线和地线接反了会发生什么?
  16. Additive secret sharing 加性秘密共享(加法,乘法,向量乘法)
  17. Web 身份证读取,ActiveX 网页 二代身份证读取
  18. 识别12306验证码脚本
  19. RHEL5/6 加载 DVD yum源
  20. HDOJ 4696 Answers 乱搞

热门文章

  1. 揭秘:蓝光光碟“造”太阳能电池的神奇之处
  2. java多线程(4) ----- Lock的使用
  3. 常用电平LVTTL、LVCMOS、LVDS、CML的标准和区别
  4. 8.1 Handling Relationships
  5. 黑马程序员————IO流2(day19)
  6. SCI论文投稿信(Cover Letter)的写法及模版(转
  7. 把一个合数分成质数的乘积
  8. 16.4 使用主窗口
  9. 完善三维全栈产品布局 的卢深视用三维全栈技术点亮2020全球智博会
  10. 会签是什么,何时使用会签,如何设计使用会签