我需要在 Java 中使用正则表达式拆分文本(每个子字符串将小于或接近 10 个字符(包括空格和特殊字符)并且不会拆分任何单词)。例如,“詹姆斯出去吃饭了。” 将是“James has”、“gone out”、“for a meal”、“.”。提前致谢。
2 回答
喵喔喔
TA贡献1735条经验 获得超5个赞
这个表达式可能有点复杂,也许我们可以这样开始:
.{1,10}[^\s](?=\s|$)
import java.util.regex.Matcher;
import java.util.regex.Pattern;
final String regex = ".{1,10}[^\\s](?=\\s|$)";
final String string = "James has gone out for a meal.";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
正则表达式电路
jex.im可视化正则表达式:
烙印99
TA贡献1829条经验 获得超13个赞
首先,删除所有双空格(如果存在)并应用此正则表达式。
.{1,11}(?:\s|$)|.{1,11}(?:[^\s]|$)
但我会使用 split 函数,然后使用“for 子句”计算长度。
添加回答
举报
0/150
提交
取消