我可以知道如何使用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:修正错误