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个回答

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

[code="java"]
for(int i=1;i<=m.groupCount();i++){
  
  System.out.println(m.group(i));
  
  }
[/code]

String src1 = "CONTENT=\"asdfsdf\"";
String re1 = "(?<=(CONTENT=\"))[^\"]+(?=\")";
Pattern p = Pattern.compile(re1);
Matcher m = p.matcher(src1);

while(m.find()){

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

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

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

while(m.find()){

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

再锻炼一下;原来都是一样.

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问