我試圖將字符串分割喜歡的正則表達式的工作:()不分割功能
"Stack Overflow #forum #website";
- >"Stack Overflow" "#forum #website"
我試圖用分割功能,如:str.split("()#", 2);
,但輸出像: "Stack Overflow" "forum #website"
。
看來,()
不起作用,我該怎麼辦才能解決這個問題?
在此先感謝。
我試圖將字符串分割喜歡的正則表達式的工作:()不分割功能
"Stack Overflow #forum #website";
- >"Stack Overflow" "#forum #website"
我試圖用分割功能,如:str.split("()#", 2);
,但輸出像: "Stack Overflow" "forum #website"
。
看來,()
不起作用,我該怎麼辦才能解決這個問題?
在此先感謝。
您需要使用肯定的超前斷言。
str.split("\\s(?=#)", 2);
一點解釋:
\\s
任何空格字符相匹配。(?=#)
積極的前瞻聲明,認爲匹配,即space
應該跟着#
。#forum
之前的空間得到匹配,並且java根據該空格字符進行拆分。或
str.split(" (?=#)", 2);
它的工作原理,你能解釋一下嗎? – Fingal
public class split {
public static void main(String args[]){
String Str = new String("Stack Overflow #forum #website");
//**********that's what is to be done ***************************
System.out.println("Return Value :");
for (String retval: Str.split("(?=#)", 2)){
System.out.println(retval);
}
//***********THAT'S WHAT YOU WERE DOING ******************************
System.out.println("");
System.out.println("Return Value :");
for (String retval: Str.split("#", 2)){
System.out.println(retval);
}
}
}
OUTPUT: - (返回值: 堆棧溢出 #forum #website) (返回值: 堆棧溢出 論壇#website) –
在表達式中,括號不具有任何影響。你應該看看正則表達式手冊中關於如何使用它們。順便說一句,網絡上有很多正則表達式編輯器。其中一人可能會幫助你。 – hagello