0

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

1) 文本A;文本B;文本C;文本D

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

2) 文本A;文本B;文本C;文本D AB(数字A)

提取 AB(numberA) 的 "textA;textB;textC;textD" 又名父级

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

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

4

2 回答 2

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));
    

打印:textA;textB;textC.
UPD:因为模式未知,所以像 1) 这样的答案textA;textB;textC;(textD)也是正确的。当问这样的问题时,最好写模式,即使你不知道正则表达式也只能使用单词。
UPD:谢谢纠正

于 2012-06-06T12:16:55.930 回答
0

可以简单地使用这个吗?

String[] arr = "textA;textB;textC;textD AB".spilt("[; ]");
于 2012-06-07T07:27:44.260 回答