テキスト ファイルから 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」と「milan」という単語を含む文(文の境界はピリオドの後にスペースが続きます)、つまり 3 番目の文(順序は重要ではありません。両方の単語を含む文が必要です)が必要です
- 上記の正規表現パターンと他の多くの正規表現を試しました
- ただし、「milan」の後の文の一部、または最初の「he」から始まる2文を抽出します
- 正規表現またはJavaの他の方法を使用してこのタスクを実行する方法を提案してください
(私は2つのエンティティ間の関係パターンの抽出に取り組んでいます。この場合、関係パターンはエンティティ「edison」と「milan」の両方で「生まれた」ものです。多数の関連テキストファイルまたはWebドキュメントから上記のような文が必要です[エジソンの伝記や「エジソン ミラノ」の Google からの最初の 500 リンクのように] さらに処理を行うため)