我是 Regex 的新手,非常困惑为什么在以下操作中split
方法没有返回任何组:
String toSplit ="FN:Your Name";
String splitted [] = toSplit.split("(FN:)([A-Za-z]*) ([A-Za-z]*)");
System.out.println("Length: "+splitted.length);
输出:
Length: 0
问题:是什么原因,如何获得数组中的Your
和Name
返回?
答案 0 :(得分:1)
您不想拆分,而是使用Matcher:
String toSplit ="FN:Your Name";
Pattern pattern = Pattern.compile("(?:FN:)([A-Za-z]*) ([A-Za-z]*)");
Matcher matcher = pattern.matcher(toSplit);
if (matcher.find()) {
String[] splitted = new String[]{
matcher.group(1),
matcher.group(2)
};
System.out.println("splitted: " + Arrays.toString(splitted));
}
结果:
splitted: [Your, Name]
请注意:我已使第一组无法使用?:
捕获,因为您无需在结果中获取它。