问题为要把数据表里某个字段里的记录,剥离出符合匹配条件的那一段记录。最简单的例子比如把手机号码中移动的号码给分捡出来。这个如何利用正则表达式我是会的。    现在这个问题复杂一些,匹配的可能性有若干项,比如“http:….jpg”、“http:….gif”、“rtsp:…jpg”等等,也就是说匹配的头(如http、rtsp)和尾(如jpg、gif)均有若干种可能,这个我就搞不定了!   请高手指点一下如何利用正则分拣出匹配指定条件的字符串!谢谢!

解决方案 »

  1.   

    我的思想是你先查前几个字符,比如取前4个,看一下是不是http  rtsp 然后再查找一下最后的向个字符
      

  2.   

    URL:http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
    这是URL的正则,你可以把后面改为你所需要验证的字符JPG等等
      

  3.   

    URL的正则到处都抄的到。
    我的问题就是如何解决头和尾都可能出现若干种可能匹配字符串的情况!!!!!
    或者如何利用程序和正则结合解决这个问题!!
      

  4.   

    是这个意思吗?
    bool FoundMatch = false;
    try {
    FoundMatch = Regex.IsMatch(SubjectString, "^(http:|https:|rtsp:).*(\\.jpg|\\.gif)$");
    } catch (ArgumentException ex) {
    // Syntax error in the regular expression
    }
      

  5.   

    或者这样,不知道能不能达到你的意图。
    bool FoundMatch = false;
    try {
    FoundMatch = Regex.IsMatch(SubjectString, "^(http:).*(\\.jpg)$|^(https:).*(\\.gif)");
    } catch (ArgumentException ex) {
    // Syntax error in the regular expression
    }
      

  6.   

    看看这个可以不?
    string sTemp="qngolhmhttp:jdih.jpgdssh";//只是随便的举个例子,这里是要匹配的字符串
    string regularStr="(http:|https:|rtsp:).*?(\\.jpg|\\.gif)";
    Match M1 = Regex.Match(sTemp,regularStr,RegexOptions.Singleline|RegexOptions.IgnoreCase);
    string result = M1.Value;
    然后这个result就是要的结果啦!
      

  7.   

    哈哈,谢谢 linuxyf(率人哥哥) 和 xiaohuluwa(葫芦娃) 你们说的方法我感觉是可以的。我测试后可以的话尽快结贴送分!!!
      

  8.   

    xiaohuluwa(葫芦娃) 
    这个是正解。。
    string regularStr="(http:|https:|rtsp:).*?(\\.jpg|\\.gif)";
    但最好用Matchs来一次捕捉全部的匹配字符串。。
      

  9.   

    谢谢两位的解答,测试查询数据表来不及,我就简单写了一小段测试代码。果然可以。
    下面是我写的
    Input是输入框、Out是输出框
    Regex regSub = new Regex("(http:|https:|rtsp:).*?(\\.jpg|\\.gif)",RegexOptions.Compiled);
    Match mcMatch;mcMatch = regSub.Match(Input.Text);
    if(mcMatch.Success)
    {
    Out.Text = mcMatch.Value;
    }
    else
    {
    Out.Text = "无匹配结果!";
    }
    至于两位正则里的细微差别,我再学习一下。分数送上!谢谢指教!!