可以使用=\\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]
注:空間後爲格式化添加,
雖然在ss
和ss2
數組元素中沒有空格,但由Arrays.toString
函數執行。
對於使用
Set<String> mySet = new HashSet<String>(Arrays.asList(ss));
你仍然可以使用分裂(),但你必須再拆每個結果。 –
'String.split(正則表達式)'你有什麼問題?個體元素是如何構成的?是否總是'name = numeric_value name = numeric_value ...'或者它們是否被';'分隔,是否有非數字值等?作爲split()的替代方法,你可以直接使用'Pattern'和'Matcher'並匹配並提取'='前面的單詞。 – Thomas