当前位置: 首页 > 知识库问答 >
问题:

用java语言从文本文件中提取包含2个单词的句子

邢晗日
2023-03-14
File doc = new File("D:\\MyFile.txt");

BufferedReader br = null;

System.out.println("enter the regex pattern to be matched");
Scanner keyboard = new Scanner(System.in);
String regxpat = keyboard.nextLine();


  String line;
  br = new BufferedReader(new FileReader(doc));     
  Pattern p = Pattern.compile(regxpat, CASE_INSENSITIVE);



  while ((line = br.readLine()) != null) 
  {

    try
    {
        Matcher m = p.matcher(line);
        m.find();

        System.out.print(m.group().toString());

    }        
    catch (IllegalStateException e) 
    {
    }
    continue;

  }
//i tried regex= "(he)*([.&&[^\.]]*?)Milan(.*?)\."

如果案文是:

"...Thomas Edison is a scientist. He invented bulb. He was born in Milan, Ohio, and grew up in Port Huron, Michigan. He was the seventh and last child of Samuel Ogden Edison, Jr...."
  • 我想要一个句子(句子边界是句号,后面是空格),其中有“他”和“米兰”,即第三个句子(顺序不重要。任何同时有这两个词的句子都是必需的)
  • 我尝试了上面的regex pattrn和其他许多方法
  • 但是它在'milan'之后提取部分句子,或者从第一个'he'开始提取两个句子
  • 请建议使用regex或Java中的任何其他方法完成此任务的方法

(我正致力于提取2个实体之间的关系模式:在这种情况下,关系模式是“出生在”B/W实体“爱迪生”和“米兰”。我需要从大量相关的文本文件或web文档(如爱迪生传记或谷歌关于“爱迪生米兰”的前500个链接)中提取上述句子来做进一步的处理)

共有1个答案

金嘉
2023-03-14

我的建议是不要指望正则表达式完成所有的处理,而是一步一步地处理文本。

我想要的句子(句子边界是句号后跟空格)。

好吧。使用字符串拆分方法获得句子。使用句号(句点)后跟一个或多个空格作为正则表达式。我将把这个正则表达式的构造留给您。

加上“他”和“米兰”

好吧。编写一个方法来输入单词并将它们添加到列表 中。

编写另一个方法来遍历用另一个拆分方法创建的字符串数组,将句子拆分为单词。同样,我将把这个正则表达式的构造留给您。

 类似资料:
  • 问题内容: 假设您有一个像这样的文本文件:http : //www.gutenberg.org/files/17921/17921-8.txt 有没有人有一个好的算法或开放源代码从文本文件中提取单词?如何获得所有单词,同时避免使用特殊字符,并保留诸如“ it’s”之类的内容… 我在用Java工作。谢谢 问题答案: 这听起来像是正则表达式的正确工作。如果您不知道如何开始,以下是一些Java代码,可以

  • 问题内容: 我正在尝试从文本中提取所有包含指定单词的句子。 但它正在回报我: 代替 : 有什么帮助吗? 问题答案:

  • 我想读一个文本文件,打印出已知单词前面的单词,比如Java中的xxx。我使用Scanner类用java编写了这段代码。但是这段代码只打印了“xxx”前面的一半单词,而“xxx”前面的一些单词则丢失了。我想知道是什么问题,你能解决这个代码吗。 测试文件包含类似的内容

  • 问题内容: 我正在使用ADFA- LD数据集进行基于主机的入侵检测项目,现在正在进行特征提取模块。我构建了由长度为4的系统调用短语组成的短语词典。现在,为了进行特征提取,我需要将这些短语与新的系统调用轨迹进行比较(以下是一些示例): 。 我需要的是,如何将这些短语与新痕迹进行比较。我在用Java做。 我的短语字典: sys_socketcall-sys_poll-sys_clock_gettime

  • 我有一个庞大的代码库,其中包含大量JAVA和。sql文件。我打算从所有这些文件中提取所有SQL语句。 这是我打算实现这一目标的方式- 构建一个正则表达式文件,其中包含我打算提取的选择、插入、删除、更新等模式。 在代码库中逐行解析文件并与Regex匹配。如果找到匹配,则注册代码行、文件名、模式等。 当SQL查询被分成多行时,就会出现问题。 我正在使用java。util。正则表达式。Matcher和j

  • 问题内容: 有谁知道从文本中仅提取名词的最简单方法? 我听说过TreeTagger工具,但尝试尝试一下,但由于某种原因而无法使用。 有什么建议? 谢谢菲尔 编辑: 那是我的代码,英语是语言。我遇到了错误:new TokenHandler(){}类型必须实现继承的抽象方法TokenHandler.token。难道我做错了什么? 问题答案: 首先,您必须标记文本。这看似微不足道(在任何空格处分割都可以