Возможно, это не самое элегантное решение, но по вашему требованию вы можете сделать это так:
(([A-Za-Z] +) / ([A-Za-Z] +)?) | (([A-Za-Z] +) / ([\ d] +)?) | (([\ d] +?) / ([A-Za-Z] +))
Это проверка слова / слова, слова / числа и числа / слова
заменить соответствующими найденными группами \ 2 \ 5 \ 8, \ 3 \ 6 \ 9
Простая Java-программа для этого будет:
public static void main(String[] args) {
String[] stringArray=new String[]{"Hello/World","Hello/12","15/Hello","12/17"};
for(String s:stringArray) {
System.out.println(s.replaceAll("(([a-zA-Z]+?)/([a-zA-Z]+))|(([a-zA-Z]+?)/([\\d]+))|(([\\d]+?)/([a-zA-Z]+))", "$2$5$8,$3$6$9"));
}
}
Результат:
Hello,World
Hello,12
15,Hello
12/17