通过标点和特殊情况(如:)或空格拆分文本

时间:2015-09-02 14:50:14

标签: java regex

我有一个以下字符串:

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

有人可以帮忙吗?

1 个答案:

答案 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", "!", "!", "!", ":)"]