【问题标题】:Find all keywords of a text file that have at least one letter by using regular expression使用正则表达式查找文本文件中至少有一个字母的所有关键字
【发布时间】:2016-02-18 18:30:54
【问题描述】:

我想编写一个正则表达式来删除文本文件中没有至少一个字母的所有标记。我使用 OpenNLP 标记器来提取我的文本文件的标记。例如,标记 90-87、65@7、---、8/0、? 已从给定文本中删除。

我尝试关注这些页面123;但我找不到我想要的表达方式。例如下面的代码删除令牌anti-age, 11月中旬

String[] tokens = t.getTokens(sen);

for (String word : tokens) 
    if((!isstopWord(word)) && word.matches("[a-zA-Z]+"))
          bufferedw.append(word+"\n");

但是,我不知道如何防止删除诸如 anti-age 之类的标记。

问题出在哪里?

【问题讨论】:

  • 当您说“至少一个字符”时,您的意思是“至少一个字母”吗?因为9-@/也是Unicode字符。
  • 请说明您需要保留什么样的令牌,即制定要求,而不是示例。顺便说一句,也许,您正在寻找 word.matches("\\S*\\pL+\\S*")
  • @Andreas 是的,我的意思是一封信。
  • @WiktorStribiżew 我想要至少有一个字母的令牌。
  • ideone.com/f3RR8i?像这样?

标签: java regex


【解决方案1】:

[a-zA-Z]+ 表达式匹配仅由一个或多个 ASCII 字母组成的字符串。它不允许使用连字符、撇号等。

要匹配一个不包含空格且至少包含一个字母的字符串,可以使用

word.matches("\\S*\\pL\\S*")

IDEONE demo

\S* 模式匹配零个或多个非空白字符,\pL 匹配任何 Unicode 字母。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多