給定一個字符串S,找到該字符串中的字數。對於這個問題,一個單詞由一個或多個英文字母串組成。Java拆分正則表達式
注意:空格或任何特殊字符,如![,?。\ _'@ +]將作爲分隔符。輸入格式:該字符串只包含小寫英文字母,大寫英文字母,空格和這些特殊字符:![,?._'@ +]。
輸出格式:在第一行,打印字符串中的字數。這些詞不需要是唯一的。然後,在單獨的一行中打印每個單詞。
我的代碼:
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
String regex = "(|!|[|,|?|.|_|'|@|+|]|\\\\)+";
String[] arr = str.split(regex);
System.out.println(arr.length);
for(int i = 0; i < arr.length; i++)
System.out.println(arr[i]);
當我提交的代碼,它工作的測試用例剛剛超過一半。我不知道測試用例是什麼。我正在尋求墨菲定律的幫助。我所實施的正則表達式不起作用的情況是什麼?
爲什麼你包括你的正則表達式反斜線?這不符合要求。另外,你正在使用'['和']'而不逃避它們。 –
對於在正則表達式中有特殊含義的字符,您需要將它們轉義。作爲一個附註,你可能會發現從一個字符集(例如,'[a-z]'是全部小寫字母的集合)而不是一系列X或Y或Z情況下拆分會更容易和更清晰。 – Vulcan
我道歉。不知道我必須逃避反斜槓才能在此發佈。 – juice