检查字符串是否包含带有数字的条款

时间:2018-04-05 11:28:30

标签: java regex string text split

根据我的知识,没有任何功能可以识别包含数字的术语。我有一个语料库,有一些句子,如:

Alice2B Visum 7/2 Dann 394-3973-3 ging sie nach Hollywood dort als 25.1 Drehbuchautorin arbeiten Kurz 2006 nach ihrer 329-49 Ankunft lernte sie den Filmregisseur 02 / ayn Cecil

我需要维护单词并删除其中包含数字的所有数字或术语。对于此示例,输出应如下所示:

Visum Dann ging sie nach Hollywood dort als Drehbuchautorin arbeiten Kurz nach ihrer Ankunft lernte sie den Filmregisseur Cecil

我正在寻找适用于 Java 的内容。有关此主题的任何信息都表示赞赏。

4 个答案:

答案 0 :(得分:3)

您可以使用此正则表达式查找包含数字的术语

\S*\d+\S*

然后删除它们(简单的你可以使用String.replaceAll(regex))。如果你想单独处理网址,你可能需要找到另一种方法来检测它们

注意:验证正则表达式here

答案 1 :(得分:1)

将其拆分为子串(String.split()),然后遍历子串以查看它们是否包含数字(String.matches(regex))

答案 2 :(得分:1)

试试这个:

@Component

答案 3 :(得分:0)

我需要这样的东西。也许它会帮助别人。谢谢@Shafin Mahmud和@BjörnSchönrock。

final String inputText = "Alice2B Visum 7/2 Dann 394–3973-3 ging sie nach Hollywood dort als 25.1 Drehbuchautorin arbeiten Kurz 2006 nach ihrer 329–49 Ankunft lernte sie den Filmregisseur 02/ayn Cecil";

for (String t : inputText.split(" +")) {
    if (t.split("\\S*\\d+\\S*").length>0)
       System.out.println(t);
}

或类似的东西:

final String inputText = "Alice2B Visum 7/2 Dann 394–3973-3 ging sie nach Hollywood dort als 25.1 Drehbuchautorin arbeiten Kurz 2006 nach ihrer 329–49 Ankunft lernte sie den Filmregisseur 02/ayn Cecil";

Pattern p = Pattern.compile( "[0-9]" );
for (String t : inputText.split(" +")) {
    if (!p.matcher(t).find())
       System.out.println(t);
}