膨大な数のテキスト文書があり、それぞれから特定の部分を抽出しようとします。行の先頭に常に「Item 7」で始まり、別の行の先頭に常に「Item 8」で終わります。私は正規表現でこの部分を見つけることができます。RegEx:特定の最小長の文字列に一致します
(^(*)Item 7(.+?)^(*)Item 8)
私の二つの質問は以下のとおりです。
が潜在的に私の文書のそれぞれにこの記述に合う2つの部分があります。私は2番目のものと一致することを確かめたい。
notepad ++を使用して「検索と置き換え」クエリで正規表現を使用してこの部分を抽出するにはどうすればよいですか?
これに適切なツールを使用しているのかどうかはわかりません。
ありがとう!
補足: これまでの回答の助けを借りて、私はメモ帳で次のようにしました。++。
ため 検索。*(^(*)項目* 7(?! A)(?!。 ^項目* 7(?! * A))(。+?)^(*)(? = ^アイテム8))。これまでのあなたの助けのための
$ 1
おかげで
Raplce。 1つの例外を除いてうまく動作します。私はもっと詳しく説明しなければならないのではないかと心配しています。テキストの抽出元となるドキュメントの大半は、すべてではありません。だから私は2番目のケース「Item 7 to Item 8」を抽出したいのです。また、私のコードについて不思議な場合に備えて、Item 7Aがあります。
これまで分かったように、項目7から項目8までの2番目のケースでは、各ページのヘッダーに「項目7」という項目があります。したがって、私のコードはItemの最後のページにのみ一致しますいくつかの例では7である。
解決策は、項目7から項目8のケースを無視し、特定の最小の長さしか持たない場合があると考えました。具体的には、アイテム数が120未満の場合はアイテム7〜アイテム8のケースのみ無視します。
アイデア?
'(?m)^ Item 7([\ S \ s] *?)(?=^Item 8)'しかし、例を表示する必要があります。 – sln
ブロックが2つあり、ToCがない場合はどうなりますか?それでは、どうやって掴むべきか教えてください。申し訳ありませんが、現在のところ、コンテキストルールを定式化するまで、この問題には解決策はありません。 –