Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式根据长度和拆分索引处的相邻字符拆分字符串_Java_Regex_String_Split - Fatal编程技术网

Java 正则表达式根据长度和拆分索引处的相邻字符拆分字符串

Java 正则表达式根据长度和拆分索引处的相邻字符拆分字符串,java,regex,string,split,Java,Regex,String,Split,假设这是我的示例字符串: String s = "Just a sa'mple 'String."; 我想要分割这个字符串,这样标记长度将始终小于或等于5个字符,并且分割索引处的相邻字符是字母数字或空白 String tokens[] = s.split(<regex>); 请注意,第二个标记“a s”预期只有三个字符。我不能拆分第二个标记,例如“a sa'”或“a sa”将不正确,因为在第一种情况下,非字母数字字符“'”(单引号)将位于拆分索引之前,在第二种情况下,它将位于拆分

假设这是我的示例字符串:

String s = "Just a sa'mple 'String.";
我想要分割这个字符串,这样标记长度将始终小于或等于5个字符,并且分割索引处的相邻字符是字母数字或空白

String tokens[] = s.split(<regex>);
请注意,第二个标记“a s”预期只有三个字符。我不能拆分第二个标记,例如“a sa'”或“a sa”将不正确,因为在第一种情况下,非字母数字字符“'”(单引号)将位于拆分索引之前,在第二种情况下,它将位于拆分索引之后

我正试图用Java实现这一点


如果我发现拆分索引的相邻字符不是字母数字或空格,我尝试在字符串上迭代并递减拆分索引。我觉得我目前的方法是使代码复杂化,而使用regex将简化代码。

看看这段代码是否有用


(?如果我发现拆分索引的相邻字符不是字母数字或空格,我已经尝试在字符串上迭代并递减拆分索引。我觉得我当前的方法是使代码完整,而使用正则表达式将简化代码。我将在访问笔记本电脑后尽快用代码片段更新问题。Reas请投反对票。这可能有助于我改进这个问题以及今后的任何问题。
"Just ","a s","a'mpl","e 'St","ring."
import java.util.regex.Matcher;
import java.util.regex.Pattern;

final String regex = "(?<=[\\w\\d\\s.]|^)[\\w\\d\\s.].{0,3}[\\w\\d\\s.](?=[\\w\\d\\s.]|$)";
final String string = "Just a sa'mple 'String.";

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));
    }
}
Full match: Just 
Full match: a s
Full match: a'mpl
Full match: e 'St
Full match: ring.