将字符串拆分为下一个冒号之前的单词?

时间:2014-04-18 23:29:02

标签: java regex string

我试图在第一个冒号条目和包含冒号的下一个单词之间拆分此字符串。该字符串是一个长文本。它可以在冒号之间有句号或逗号。

例如,如果我有以下字符串。

String s       = "Description: This is the description. Observation: This is the description.";
String[] parts = s.split("REGULAR_EXPRESSION");

结果将是:

This is the description.

例如,如果字符串是

"Description: This is. The, description. Words: words words"

结果将是:

This is. The, description.

4 个答案:

答案 0 :(得分:1)

如果你想要你所要求的,你需要一个按冒号和句号分割的正则表达式。

这样的东西?

:.+\.

编辑:以下是此正则表达式的细分(按照罗马C的要求)

:字面匹配冒号(:

.+匹配任何一个角色,无限次,贪婪(换行除外)

\.与句点字符(.)字面匹配

答案 1 :(得分:0)

这会将字符串拆分为 冒号或句点。元素索引1(第二个元素)就是你想要的。修剪它。

String description = "Description: This is the description. Observation: This is the description.".
   split("[\\.:]")[1].trim();

你也可以预先修剪它:

String description = "Description: This is the description. Observation: This is the description.".
   split("[\\.:] +")[1];

如果可能存在非空格空格,请使用"[\\.:]\\s+"

答案 2 :(得分:0)

Split不是最好的使用方法。这段代码可以为您提供所需的部分:

String part = string.replaceAll("\\w+:\\s+(.*?)\\s+\\w+:.*", "$1");

这也会修剪提取的部分。


一些测试代码:

String string = "Description: This is the description. Observation: This is the description.";
String part = string.replaceAll("\\w+:\\s+(.*?)\\s+\\w+:.*", "$1");
System.out.println(part);

输出:

This is the description.

答案 3 :(得分:0)

下一个怎么样?:

String string = "Description: This is the description. Observation: This is the description.";
String str = string.replaceFirst(".*:\\s+(.*)", "$1");