我有一个以下字符串:
Hello word!!!
或
Hello world:)
现在我想把这个字符串拆分成一个字符串数组,其中包含Hello,world,!,!,!或者你好,世界,:)
问题是如果我可以使用拆分的所有部分之间有空格(“”) 但在这里 !!!或:)附加到字符串
我也使用了这段代码:
String Text = "But I know. For example, the word \"can\'t\" should";
String[] Res = Text.split("[\\p{Punct}\\s]+");
System.out.println(Res.length);
for (String s:Res){
System.out.println(s);
}
我从这里找到它但在我的情况下并没有真正帮助: Splitting strings through regular expressions by punctuation and whitespace etc in java
有人可以帮忙吗?
答案 0 :(得分:2)
在我看来,你不想分裂,而是捕捉某些群体。分裂字符串的东西是它摆脱了你分割的部分(所以如果你用空格分割,你的输出数组中没有空格),因此如果你用"!& #34;你不会在输出中得到它们。可能这可以用来捕捉你感兴趣的东西:
(\w+)|(!)|(:\))/g
regex101
请注意,不要使用字符串拆分,而是使用您使用的任何引擎/语言对您的字符串执行正则表达式。在Java中,它将类似于:
String input = "Hello world!!!:)";
Pattern p = Pattern.compile("(\w+)|(!)|(:\))");
Matcher m = p.matcher(input);
List<String> matches = new ArrayList<String>();
while (m.find()) {
matches.add(m.group());
}
您的匹配数组将包含:
["Hello", "world", "!", "!", "!", ":)"]