gpt4 book ai didi

java - 如何优化此正则表达式以在空格和标点符号(减去撇号)上拆分行

转载 作者:行者123 更新时间:2023-11-29 04:14:14 24 4
gpt4 key购买 nike

我试图在空格和标点符号上拆分文本行,我已经设法做到了,但它现在在生成的拆分行数组中也包含空格:

public static void main(String[] args) {

String test = "tim's work 'cool' asdas 'right' three-year-old 123123.";
String rePattern = "[?,.!\\s]|(?<=\\s)\\'|\\'(?=[^a-zA-Z])";

String[] arr = test.split(rePattern);

for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}

比如上面的spit会打印:

tim's
work

cool

asdas

right

所以看起来我设法正确拆分标点符号,但它仍然在数组中包含空字符串。如何优化我的正则表达式,使其在拆分时不包含空字符串?

最佳答案

一种选择是在每一侧用可选的 ' 包围空格/句子终止字符集,确保 ' 使用在可能的情况下,将 空格/句子终止符一起拆分:

String rePattern = "'?[?,.!\\s]'?";

输出:

tim's
work
was
cool
asdas
right

请注意,在正则表达式中不需要转义 ',至少在字符串定界符为 " 的 Java 中不需要。此外,除非您期望空格 other 除了您想要拆分的纯空格(例如,换行符或制表符或类似字符),您可以只使用文字空格而不是 \\s,如果你喜欢,它更精确和简洁(例如 String rePattern = "'?[?,.!]'?"; )

关于java - 如何优化此正则表达式以在空格和标点符号(减去撇号)上拆分行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53346479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com