检查字符串是否包含带有数字的术语



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

爱丽丝2B 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 中工作的东西。有关此主题的任何信息,我们将不胜感激。

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

S*d+S*

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

注意:在此处验证正则表达式

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

试试这个:

final List<String> list = Arrays.asList(str.split(" +"));
list.replaceAll(s -> s.matches(".*\d+.*") ? "" : s);
final String result = StringUtils.join(list, ' ').replaceAll(" +", " ");

我需要这样的东西。也许它可以帮助别人。谢谢@Shafin马哈茂德和@Björn勋洛克。

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);
}

相关内容

最新更新