gpt4 book ai didi

java - 将正则表达式中的字符串拆分为 - 作为一个单词

转载 作者:行者123 更新时间:2023-11-30 05:53:04 27 4
gpt4 key购买 nike

我试图在每组正则表达式中分割一个包含 32 个字符的句子。如果第 32 个字符是单词中的字母,则句子将在完整单词之后拆分。当我的输入是一个带有“-”的句子时,它也会拆分该单词。

这是我正在使用的正则表达式

(\b.{1,32}\b\W?)

输入字符串:

Half Bone-in Spiral int with dark Packd Smithfield Half Bone-in Spiral Ham with Glaze Pack

结果组:

  1. Half Bone-in Spiral int with
  2. dark Packd Smithfield Half Bone-
  3. in Spiral Ham with Glaze Pack

在上面的分割中,“Bone-in”是一个单词,但正则表达式考虑单独的单词来分割它。如何修改我的正则表达式以将“-”视为一个单词?简而言之,我想要的是Bone-in之后的分割。

谢谢。

最佳答案

您可以使用

(\b.{1,32}(?![\w-])\W?)

详细信息

  • \b - 单词边界
  • .{1,32} - 除换行符之外的 1 到 32 个字符,尽可能多
  • (?![\w-]) - 当前位置左侧紧邻的字符不能是单词(字母、数字或 _)或 - 字符
  • \W? - 可选的非单词字符。

在Java中,使用以下方法:

public static String[] splitIncludeDelimeter(String regex, String text){
List<String> list = new LinkedList<>();
Matcher matcher = Pattern.compile(regex).matcher(text);

int now, old = 0;
while(matcher.find()){
now = matcher.end();
list.add(text.substring(old, now));
old = now;
}

if(list.size() == 0)
return new String[]{text};

//adding rest of a text as last element
String finalElement = text.substring(old);
list.add(finalElement);

return list.toArray(new String[list.size()]);
}

Java example :

String s = "Half Bone-in Spiral int with dark Packd Smithfield Half Bone-in Spiral Ham with Glaze Pack";
String[] res = splitIncludeDelimeter("(\\b.{1,32}(?![\\w-])\\W?)", s);
System.out.println(Arrays.toString(res));
// => [Half Bone-in Spiral int with , dark Packd Smithfield Half , Bone-in Spiral Ham with Glaze , Pack, ]

关于java - 将正则表达式中的字符串拆分为 - 作为一个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53601310/

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