根据我的知识,没有任何函数可以识别包含数字的术语。我有一个语料库,有一些句子,例如:
爱丽丝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);
}