我可以知道如何使用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字符串函数,这使得它不可配置。我怀疑用户没有给我实际数据,我需要在不久的将来再次更改功能。我希望使用正则表达式来使函数可配置。
答案 0 :(得分:3)
(.*);[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:thx for correction
答案 1 :(得分:0)
可以简单地使用它吗?
String[] arr = "textA;textB;textC;textD AB".spilt("[; ]");