вы можете использовать =\\d+;?
регулярных выражения
=\\d+;?
матча =
и столько же цифры с ;
в качестве дополнительного
String s="jayesh =10 vyas =13 harshit=10;";
String[] ss=s.split("=\\d+;?");
System.out.println(Arrays.toString(ss));
выхода
[jayesh , vyas , harshit]
Чтобы продлить его дальше, вы можете использовать \\s*=\\d+[,;]?\\s*
\\s*
: поиск нуля или более пробелов
[,;]?
соответствует любому символу упоминания в списке в качестве дополнительного
, но если вы хотите избежать любого специального символа после цифр используйте
\\s*=\\d+\\W*"
:
\\s*=
: соответствует нулю или больше мест и =
характер
\\d+
: матч еще один или цифр
\W*
: соответствует нулю или больше несловообразующие символы, кроме a-zA-z0-9_
String s="harsh=2, vyas=5; vyas=5";
String s2 ="jayesh =10 vyas=13 harshit=10;";
String regex="\\s*=\\d+\\W*";
String[] ss=s.split(regex);
String[] ss2=s2.split(regex);
System.out.println(Arrays.toString(ss));
System.out.println(Arrays.toString(ss2));
выхода
[harsh, vyas, vyas]
[jayesh, vyas, harshit]
Примечания: Space после Добавлен ,
для formatt используя функцию Arrays.toString
, хотя в массивах ss
и ss2
нет места.
Для Hashset
использования
Set<String> mySet = new HashSet<String>(Arrays.asList(ss));
Вы можете использовать раскол(), но вы должны будете затем разделить каждый результат. –
Какая проблема с 'String.split (regex)' у вас есть? Как структурируются отдельные элементы? Всегда ли это 'name = numeric_value name = numeric_value ...' или они разделены ';', существуют ли нечисловые значения и т. Д.?В качестве альтернативы 'split()' вы можете напрямую использовать 'Pattern' и' Matcher' и сопоставлять и извлекать слова перед '='. – Thomas