我正在尝试在每组正则表达式中拆分一个包含32个字符的句子。如果第32个字符是单词中的字母,则该句子将在完整单词后分割。当我输入的句子中带有“-”时,它也会拆分该词。
这是我正在使用的正则表达式
(\b.{1,32}\b\W?)
输入字符串:
半包入式螺旋int配深色Packed Smithfield Half 带釉包装的骨制螺旋火腿
结果组:
- 具有以下功能的半骨骼螺旋int
- 深色包装的Smithfield半骨-
- 带釉包的螺旋火腿
在上述拆分中,“ Bone-in”是一个单词,但regex会考虑单独的单词对它进行拆分。如何修改我的正则表达式以将“-”视为一个单词?简而言之,我想在“骨干”之后拆分。
谢谢。
答案 0 :(得分:1)
您可以使用
dhm
详细信息
(\b.{1,32}(?![\w-])\W?)
-单词边界\b
-尽可能多地包含1到32个除换行符以外的字符.{1,32}
-当前位置左侧的字符不能为单词(字母,数字或(?![\w-])
)或_
char -
-可选的非单词字符。在Java中,使用以下方法:
\W?
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()]);
}