给定一个字符串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