1

テキスト ファイル (または XML ファイル) を文字列全体として表現し、その中の特定の文字列を検索 (または一致) させるにはどうすればよいですか?

BufferedReader オブジェクトを作成しました。

BufferedReader input =  new BufferedReader(new FileReader(aFile));

次に、次のように、さまざまな区切り文字を指定するオプションを指定して Scanner クラスを使用しようとしました。

//Scanner scantext = new Scanner(input);
//Scanner scantext = new Scanner(input).useDelimiter("");
Scanner scantext = new Scanner(input).useDelimiter("\n");
while (scantext.hasNext()) {  ... }

このような Scanner クラスを使用すると、テキストを 1 行ずつ、または単語ごとに読み取ることができますが、処理したいテキストで時々

</review><review>

私が言いたい<review>のは、テキストのどこかに " " が見つかった場合は、" " が見つかるまで次の行 (またはテキストの一部) で何かを行うことです</review>。問題は、<review>and</review>がテキスト内の別の場所にあり、他のテキストにくっついている場合があることです (したがって、区切り文字としての空白は役に立ちません)。

Javaの正規表現API(PatternクラスとMatcherクラス)を使えばいいのにと思ったのですが、特定の文字列や行にマッチするようで、テキストを1つの連続した文字列にしたい(少なくともこれが私の印象でした)私がそれらについて読んだことから)。この場合、どの構造/メソッド/クラスを使用すればよいか教えていただけますか? ありがとうございました。

4

6 に答える 6

3

XML を正規表現で解析しようとしないでください。それは痛みにつながるだけです。Javaには、既存の非常に優れた XML APIがすでにたくさんあります。なぜそれらを再発明しようとするのですか?

とにかく、テキスト ファイル内の文字列を検索するには、次のようにする必要があります。

  1. ファイルを文字列としてロードします ( example )
  2. Pattern検索する を作成する
  3. a を使用しMatcherて、一致を反復処理します
于 2009-05-04T19:36:49.540 に答える
1

構造化されたxmlファイルを操作しようとしているように見えます.javax.xml.parsers.DocumentBuilderまたは他の組み込みAPIを調べてドキュメントを解析することをお勧めします.

于 2009-05-04T19:39:06.213 に答える
1

XML パーサーを使用します。

または、この例のように xpath を使用します。

于 2009-05-04T19:40:40.793 に答える
1

Java で正規表現 API (Pattern および Matcher クラス) を使用する可能性があると考えていましたが、それらは特定の文字列または行に一致するようで、テキストを 1 つの連続した文字列として保持したいと考えています。

XML ファイルを文字列に読み込んで、正規表現 API を使用してそれを操作することを妨げているものはありますか?

Apache Commons IOのFileUtilsなどを使用して、ファイルを文字列に簡単に読み込むことができます。readFileToString(File file, String encoding)

于 2009-05-04T19:40:51.497 に答える
1

また、XML 解析 API を使用することをお勧めします...しかし、「review」タグの場合にのみ何かをしたいので、DOM よりも SAX を使用する方がよいかもしれません...

于 2009-05-10T12:02:36.340 に答える
0

ここでは、テキスト ファイルの個々の行を文字列にコピーし、部分文字列 (検索文字列) を文字列 (行) と一致させることができると思います。

ただし、/ や # などのメタ文字を実行するとエラーが発生します。

于 2009-05-27T05:57:42.757 に答える