我有一个字符串,我想首先按空格分割,然后将这些字与特殊字符分开。
例如,假设输入为:
Hi, How are you???
我已经在这里编写了按空格分割的逻辑:
String input = "Hi, How are you???";
String[] words = input.split("\\\\s+");
现在,我想从特殊字符中分离每个单词。
例如:"Hi,"
至{"Hi", ","}
和"you???"
至{"you", "???"}
如果字符串没有以任何特殊字符结尾,则忽略它。
你能帮我解决Java中的正则表达式和代码吗?
答案 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 + " ");
}
}`