根据我的知识,没有任何功能可以识别包含数字的术语。我有一个语料库,有一些句子,如:
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 的内容。有关此主题的任何信息都表示赞赏。
答案 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);
}