veenter 2008-11-13 10:32
浏览 246
已采纳

Java使用正则表达式提取数据,JAVA里怎么写我不会,我在C#里会

我在C#写了一个 提取方法,
[code="C#"]///
/// 处理meta部分的有用数据
///
/// 要处理的数据
/// 处理好的
private string ExtractResponse(string temp)
{

        string regexStr = "CONTENT =\"(?<key>.*?)\">";
        Regex r = new Regex(regexStr, RegexOptions. None);
        Match mc = r. Match(temp);
        return mc. Groups["key"]. Value;

    }[/code]

关键是在java里这句怎么写

[code="java"]private String ExtractResponse(String temp){
string regexStr = "CONTENT =\"(?.*?)\">";

Pattern p = Pattern.compile(strExg,Pattern.CASE_INSENSITIVE);
Matcher match = p.matcher(temp);
if(match.find())
{
for(int i=0;i<match.groupCount();i++)
{

  }

}
}[/code]

java里 [color=red]string regexStr = "CONTENT =\"(?.*?)\">";[/color]
怎么写可以完成C#里那样写一样的功能
[b]问题补充:[/b]
[color=red]不求会或是不知道的人不要回复,不要骗分好吧 [/color]
[b]问题补充:[/b]
[color=red][size=xx-large]高手看我写个一个列子,基本算是满足我的需求了,但是还差点[/size][/color]
[code="java"]
// 原始字符串
String strTemp = "/ssiwh/vieen/;aa=87211_diweuj;bb=wqqeii_998;qq/;/";

    // 正则表达式 用来区配提取aa= ; bb= ;
    String strExg = "/ssiwh/vieen/;aa=(.*);bb=(.*);qq/;/";
    Pattern p = Pattern.compile(strExg, Pattern.CASE_INSENSITIVE);
    Matcher match = p.matcher(strTemp);
    if (match.find())
    {
        for (int i = 0; i < match.groupCount(); i++)
        {
            System.out.println(match.group(i));

        }

    }

[/code]

输出结果为:
[code="java"]
/ssiwh/vieen/;aa=87211_diweuj;bb=wqqeii_998;qq/;/
87211_diweuj
[/code]

这样的输出结果不太多头,我要它提取第一个获取点aa= ;之间的。第二个获取点
bb= ;之间的。它现在是打印了全部,完后打印了第一个获取点,第二个获取点没提取,我要提取
87211_diweuj
wqqeii_998

这两个怎么改一个呢
[b]问题补充:[/b]

高手再次看

 // 原始字符串
        String strTemp = "/ssiwh/vieen/;aa=87211_diweuj;bb=wqqeii_998;cc=aaaa;qq/;/";

        // 正则表达式 用来区配提取aa= ; bb= ;
        String strExg = "/ssiwh/vieen/;aa=(.*);bb=(.*);cc=aaaa;qq/;/";
        Pattern p = Pattern.compile(strExg, Pattern.CASE_INSENSITIVE);
        Matcher match = p.matcher(strTemp);
        if (match.find())
        {
            for (int i = 0; i < match.groupCount(); i++)
            {
                System.out.println(match.group(i));

            }

        }


输出结果为:

/ssiwh/vieen/;aa=87211_diweuj;bb=wqqeii_998;cc=aaaa;qq/;/
87211_diweuj

这样的输出结果不太多头,我要它提取第一个获取点aa= ;之间的。第二个获取点
bb= ;之间的。它现在是打印了全部,完后打印了第一个获取点,第二个获取点没提取,我要提取
87211_diweuj
wqqeii_998

[size=x-large][size=small][color=red]不要提取cc= ;之间的[/color][/size][/size]

这两个怎么改一个呢

  • 写回答

5条回答

  • bohemia 2008-11-13 11:27
    关注

    String src1 = "/ssiwh/vieen/;aa=87211_diweuj;bb=wqqeii_998;qq/;/";

    String re1 = "(?<=([aa|bb]=))[^;]+(?=;)";
    Pattern p = Pattern.compile(re1);
    Matcher m = p.matcher(src1);

    while(m.find()){

    String tmp = m.group();
    System.out.println("结果:"+tmp);
    }

    再锻炼一下;hhe

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试