This question already exists:
Is there a way to split strings with String.split() and include the delimiters? [duplicate]
6年前关闭。
如何格式化我的正则表达式以允许这样做?
这是正则表达式:
它正在寻找4个字母或更大的单词。
如果要拆分某篇文章,则需要一个数组,其中包括所有定界的值以及它们之间的所有值,所有值均按它们最初出现的顺序排列。因此,例如,如果要拆分下面的句子:“我需要购买新车。我更喜欢宝马。”,拆分后的理想结果是以下内容,其中斜体值是定界符。
“我”,“需要”,“到”,“购买”,“新”,“车辆”,“。我”,“会”,“,”,“偏爱”,“宝马”。
因此,所有> 4个字符的单词都是一个标记,而每个定界值之间的所有内容也都是单个标记(即使它是多个带有空格的单词)。我将只修改定界的值,并希望其他所有内容保持不变,包括空格,换行等。
我在a different thread中读到,我可以使用环视功能使它正常工作,但似乎无法正确设置其格式。甚至有可能使它按照我想要的方式工作?
输出:
或者,如果您将替换代码更改为类似
你会得到
现在,您可以在每个
6年前关闭。
如何格式化我的正则表达式以允许这样做?
这是正则表达式:
"\\b[(\\w'\\-)&&[^0-9]]{4,}\\b"
它正在寻找4个字母或更大的单词。
如果要拆分某篇文章,则需要一个数组,其中包括所有定界的值以及它们之间的所有值,所有值均按它们最初出现的顺序排列。因此,例如,如果要拆分下面的句子:“我需要购买新车。我更喜欢宝马。”,拆分后的理想结果是以下内容,其中斜体值是定界符。
“我”,“需要”,“到”,“购买”,“新”,“车辆”,“。我”,“会”,“,”,“偏爱”,“宝马”。
因此,所有> 4个字符的单词都是一个标记,而每个定界值之间的所有内容也都是单个标记(即使它是多个带有空格的单词)。我将只修改定界的值,并希望其他所有内容保持不变,包括空格,换行等。
我在a different thread中读到,我可以使用环视功能使它正常工作,但似乎无法正确设置其格式。甚至有可能使它按照我想要的方式工作?
最佳答案
我不确定您要做什么,但是如果您要修改至少包含四个字母的单词,可以使用类似的方法(它将使用=> 4个字母的单词更改为大写字母)
String data = "I need to purchase a new vehicle. I would prefer a BMW.";
Pattern patter = Pattern.compile("(?<![a-z\\-_'])[a-z\\-_']{4,}(?![a-z\\-_'])",
Pattern.CASE_INSENSITIVE);
Matcher matcher = patter.matcher(data);
StringBuffer sb = new StringBuffer();// holder of new version of our
// data
while (matcher.find()) {// lets find all words
// and change them with its upper case version
matcher.appendReplacement(sb, matcher.group().toUpperCase());
}
matcher.appendTail(sb);// lets not forget about part after last match
System.out.println(sb);
输出:
I NEED to PURCHASE a new VEHICLE. I WOULD PREFER a BMW.
或者,如果您将替换代码更改为类似
matcher.appendReplacement(sb, "["+matcher.group()+"]");
你会得到
I [need] to [purchase] a new [vehicle]. I [would] [prefer] a BMW.
现在,您可以在每个
[
和]
上拆分此类字符串,以获得所需的数组。10-07 22:51