java - Java中按标点符号分割字符串

标签 java regex

我正在尝试执行以下操作:

String[] Res = Text.split("[\\p{Punct}\\s]+");

但是,我总是收到一些前面有空格的单词。 如何解析句子而不将空格和其他标点符号作为单词本身的一部分?

最佳答案

由于您没有提供可以重现问题的示例输入,我只能猜测。我不明白为什么你提供的正则表达式应该在结果中留下空格,除非你使用非 ASCII 空格或标点符号。 \\p{Punct}\\s 的原因都是 POSIX 字符类仅限于 ASCII,例如\\s 不会匹配 \u00a0。如果您遇到非 ASCII 标点符号和空白字符的问题,请使用 [\\p{IsPunctuation}\\p{IsWhite_Space}]+

示例

String text="Some\u00a0words stick together⁈";
String[] res1 = text.split("[\\p{Punct}\\s]+");
System.out.println(Arrays.toString(res1));
String[] res2 = text.split("[\\p{IsPunctuation}\\p{IsWhite_Space}]+");
System.out.println(Arrays.toString(res2));

将产生:

[Some words, stick, together⁈]
[Some, words, stick, together]

关于java - Java中按标点符号分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19811111/

相关文章:

java - 如何在 Groovy 中轻松地用新对象填充列表?

html - 如何从 HTML 链接中提取 HREF 值?

c++ - 静态编译会破坏ABI吗?

Java 正则表达式 : Pattern and Matcher

Java选择项目

java - Java 中的高效 XSLT 管道(或将结果重定向到源)

java - 从保存在CLOB上的文本中提取段落

java - 接口(interface)值始终为空

正则表达式 Microsoft Word 不破坏文档格式

python - re.findall() 查找所有包含否定项的二元组