Split String以特殊字符结尾 - Java

时间:2017-02-08 07:51:02

标签: java regex string split pattern-matching

我有一个字符串,我想首先按空格分割,然后将这些字与特殊字符分开。

例如,假设输入为:

Hi, How are you???

我已经在这里编写了按空格分割的逻辑:

String input = "Hi, How are you???";
String[] words = input.split("\\\\s+");

现在,我想从特殊字符中分离每个单词。

例如:"Hi,"{"Hi", ","}"you???"{"you", "???"}

如果字符串没有以任何特殊字符结尾,则忽略它。

你能帮我解决Java中的正则表达式和代码吗?

3 个答案:

答案 0 :(得分:0)

以下正则表达式可以帮助你:

(\s+|[^A-Za-z0-9]+)

这不是java正则表达式,因此您需要添加退格键。

它匹配空格\s+以及A-Za-z0-9字符串。这是一种解决方法,因为没有(或者至少我不知道)特殊字符的正则表达式。

您可以测试此正则表达式here

如果您将此正则表达式与split函数一起使用,它将返回单词。不是它所加工的特殊字符和空格。

<强>更新

根据这里的answer,java有\P{Alpha}+,它匹配任何非字母字符。所以你可以试试:

(\s|\P{Alpha})+

答案 1 :(得分:0)

我想将每个单词与特殊字符分开。

例如:“嗨”到{“嗨”,“,”}和“你???”到{“你”,“???”}

正则表达式以实现上述行为

String stringToSearch ="Hi, you???";

Pattern p1 = Pattern.compile("[a-z]{0}\\b");
String[] str = p1.split(stringToSearch);
System.out.println(Arrays.asList(str));

输出:

[嗨,,你,???]

答案 2 :(得分:0)

@mike是对的...我们需要在特殊字符上拆分句子,省略单词。这是代码:

`public static void main(String[] args) {
    String match = "Hi, How are you???";
    String[] words = match.split("\\P{Alpha}+");
    for(String word: words) {
        System.out.print(word + " ");
    }
}`