Java 从文本文件中提取令牌?

Java 从文本文件中提取令牌?,java,text,token,Java,Text,Token,我希望能够从文本文件中提取文本作为标记-例如,假设我有一个包含以下句子的文本文件: 这是一家好餐馆 相信我 我想将其内容提取为“标记”-例如,一个标记将是“It's”,下一个标记将是“”,之后的一个标记将是“a”,然后是“”,然后是“good”,然后是“restaurant”,然后是“,”和“\n”,然后是“相信”,“相信”,“我”,“!”。所以我想有一种说法是,代词要么是单词,要么不是单词 以下是我到目前为止所做的(我检查令牌是否是程序中的一个单词,此方法仅返回下一个令牌): 现在我将返回值设

我希望能够从文本文件中提取文本作为标记-例如,假设我有一个包含以下句子的文本文件:

这是一家好餐馆

相信我

我想将其内容提取为“标记”-例如,一个标记将是“It's”,下一个标记将是“”,之后的一个标记将是“a”,然后是“”,然后是“good”,然后是“restaurant”,然后是“,”和“\n”,然后是“相信”,“相信”,“我”,“!”。所以我想有一种说法是,代词要么是单词,要么不是单词

以下是我到目前为止所做的(我检查令牌是否是程序中的一个单词,此方法仅返回下一个令牌):


现在我将返回值设置为“null”,因为我不确定如何使用writer将其导出为令牌。有人对此有什么建议吗?谢谢大家!

看看Scanner类,它可能适合您的需要


如果您从文件构建扫描仪,您可以使用
next()
方法获取令牌。

我想使用Matcher类的解决方案可以解决您的问题

Matcher m = Pattern.compile("\\p{Alpha}+|\\p{Digit}+|\\p{Punct}+|\\p{Space}+").matcher("It's a good restaurant, believe me!");
while(m.find())
    System.out.println(">"+m.group()+"<");
Matcher m=Pattern.compile(\\p{Alpha}+\124;\\ p{Digit}+\124;\\ p{Punct}+\124;\\ p{Space}+).Matcher(“相信我,这是一家好餐馆!”);
while(m.find())

System.out.println(“>”+m.group()+"正则表达式确实是一个解决方案,但我认为它只会匹配完全由您提到的字符类组成的字符串……您使用了贪婪的量词和一个语句,因此当它找到一系列字母字符时,它满足4个组中的一个组,而其他组将被忽略,即使没有完整的字符串被删除匹配…我认为,我不是真正的正则表达式大师…挑战在于定义一个单词的哪些部分和哪些部分不是。上面的正则表达式是一个基于不同类别字符的示例。一些标点符号,如撇号,可以加入alpha字符,解决分离问题:“[\\p{alpha}\\\\]+\\p{Digit}+\\\p{putch}+\\p{putch}+\\p{Space}”事实上,每个模式必须匹配一组完整的单词、数字、空格等。。。
Matcher m = Pattern.compile("\\p{Alpha}+|\\p{Digit}+|\\p{Punct}+|\\p{Space}+").matcher("It's a good restaurant, believe me!");
while(m.find())
    System.out.println(">"+m.group()+"<");