使用REGEX提取数据

时间:2012-06-06 12:10:56

标签: java regex

我可以知道如何使用REGEX提取以下数据吗?

1)textA; textB; textC; textD

提取“textA; textB; textC”又名textD的父级

2)textA; textB; textC; textD AB(numberA)

提取“textA; textB; textC; textD”又称AB的父母(numberA)

3)textA; textB; textC; textD AB(numberA) 提取“numberA”进行比较

目前的实现,我使用java字符串函数,这使得它不可配置。我怀疑用户没有给我实际数据,我需要在不久的将来再次更改功能。我希望使用正则表达式来使函数可配置。

2 个答案:

答案 0 :(得分:3)

  1. (.*);[a-zA-Z]+ - $ 1
  2. (.*) .* - $ 1
  3. .* .*\((.*)\) - $ 1
    如何使用正则表达式和组:http://www.javamex.com/tutorials/regular_expressions/capturing_groups.shtml
    例如:

    String s = "textA;textB;textC;textD";
    Pattern pt = Pattern.compile("(.*);[a-zA-Z]+");
    Matcher mt = pt.matcher(s);
    if(mt.matches())
        System.out.println(mt.group(1));
    
  4. 打印:textA;textB;textC
    UPD:因为模式未知,所以答案如1)textA;textB;textC;(textD)也是如此。在提出这样的问题时,最好编写模式,即使你不知道正则表达式,你也只能使用单词 UPD:thx for correction

答案 1 :(得分:0)

可以简单地使用它吗?

String[] arr = "textA;textB;textC;textD AB".spilt("[; ]");