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

1)textA; textB; textC; textD

提取“ textA; textB; textC”,也就是textD的父级

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

提取AB(numberA)的父代的“ textA; textB; textC; textD”

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

当前实现,我使用java字符串函数,使其无法配置。我怀疑用户没有提供实际数据,因此我需要在不久的将来再次更改功能。我希望使用正则表达式使功能可配置。

最佳答案

(.*);[a-zA-Z]+-$ 1
(.*) .*-$ 1
.* .*\((.*)\)-$ 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:修正错误

10-08 02:36