我正在尝试从文本文件中提取包含 2 个单词的句子。我使用了正则表达式,如下面的代码所示。
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...."
- 我想要带有单词“he'and'milan”的句子(句子边界是句号,后跟空格),即第三句(顺序不重要。任何带有这两个词的句子都需要)
- 我尝试了上面的正则表达式模式和许多其他的
- 但它会在“milan”之后提取部分句子或从第一个“he”开始的 2 个句子
- 请建议使用正则表达式或java中的任何其他方法完成此任务的方法
(我正在努力提取两个实体之间的关系模式:在这种情况下,关系模式是“出生于”实体“edison”和“milan”。我需要来自众多相关文本文件或网络文档的上述句子[如爱迪生传记或谷歌“爱迪生米兰”上的前 500 个链接] 进行进一步处理)