繁体   English   中英

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

[英]Split a text with regex in Java

我需要用Java用正则表达式分割文本(每个子字符串少于或接近10个字符(包括空格和特殊字符),并且不分割任何单词)。 例如,“詹姆斯出去吃饭了。” 会是“詹姆斯有”,“消失”,“吃饭”,“。”。 提前致谢。

这个表达式可能有点复杂,也许我们可以从以下内容开始:

.{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));
    }
}

RegEx电路

jex.im可视化正则表达式:

在此处输入图片说明

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM