为了账号安全,请及时绑定邮箱和手机立即绑定

在 Java 中使用正则表达式拆分文本

在 Java 中使用正则表达式拆分文本

忽然笑 2022-12-21 12:42:12
我需要在 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可视化正则表达式:

//img1.sycdn.imooc.com//63a28ed400011a3806160160.jpg


查看完整回答
反对 回复 2022-12-21
?
烙印99

TA贡献1829条经验 获得超13个赞

首先,删除所有双空格(如果存在)并应用此正则表达式。

.{1,11}(?:\s|$)|.{1,11}(?:[^\s]|$)

但我会使用 split 函数,然后使用“for 子句”计算长度。


查看完整回答
反对 回复 2022-12-21
  • 2 回答
  • 0 关注
  • 133 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信