7

正規表現を使い始めたばかりで、少し行き詰まっているようです。TextSoapで複数行を使用して一括検索と置換を作成しました。これは私がOCRしたレシピをクリーンアップするためのものであり、材料と方向性があるため、「1」を「1.」に変更することはできません。これは「1Tbsp」を「1.Tbsp」に書き換えることができるためです。

したがって、このコードを検索として使用して、次の2行(おそらく余分な行がある)が次の連続番号であるかどうかを確認しました。

^(1) (.*)\n?((\n))(^2 (.*)\n?(\n)^3 (.*)\n?(\n))
^(2) (.*)\n?((\n))(^3 (.*)\n?(\n)^4 (.*)\n?(\n))
^(3) (.*)\n?((\n))(^4 (.*)\n?(\n)^5 (.*)\n?(\n))
^(4) (.*)\n?((\n))(^5 (.*)\n?(\n)^6 (.*)\n?(\n))
^(5) (.*)\n?((\n))(^6 (.*)\n?(\n)^7 (.*)\n?(\n))

上記のそれぞれの代わりとして以下を使用します。

$1. $2 $3 $4$5

私の問題は、それが私が望んでいたように機能するにもかかわらず、最後の3つの数字のタスクを実行しないことです...

クリーンアップしたいテキストの例:

1 This is the first step in the list

2 Second lot if instructions to run through
3 Doing more of the recipe instruction

4 Half way through cooking up a storm

5 almost finished the recipe

6 Serve and eat

そして、私がそれをどのように見せたいか:

1. This is the first step in the list

2. Second lot if instructions to run through

3. Doing more of the recipe instruction

4. Half way through cooking up a storm

5. almost finished the recipe

6. Serve and eat

これを逆方向に実行するために、上記の前の1行または2行を確認する方法はありますか?私は先読みと後読みを見てきましたが、その時点で少し混乱しています。誰かが私の番号付きリストをクリーンアップしたり、私が望む正規表現を手伝ってくれる方法はありますか?

4

2 に答える 2

2

dan1111は正しいです。似たようなデータで問題が発生する可能性があります。しかし、あなたが提供したサンプルを考えると、これはうまくいくはずです:

^(\d+)\s+([^\r\n]+)(?:[\r\n]*) // search

$1. $2\r\n\r\n                 // replace

Windowsを使用していない場合は\r、置換文字列からsを削除します。

説明:

^           // beginning of the line
(\d+)       // capture group 1. one or more digits
\s+         // any spaces after the digit. don't capture
([^\r\n]+)  // capture group 2. all characters up to any EOL
(?:[\r\n]*) // consume additional EOL, but do not capture

交換:

$1.       // group 1 (the digit), then period and a space
$2        // group 2
\r\n\r\n  // two EOLs, to create a blank line
          // (remove both \r for Linux)
于 2013-01-16T16:09:40.423 に答える
1

これはどうですか?

1 Tbsp salt
2 Tsp sugar
3 Eggs

正規表現には大きな制限があります。データを厳密に定義できない場合、正規表現はうまく機能しません。成分とは何か、ステップとは何かを直感的に理解できるかもしれませんが、それからアルゴリズムの信頼できる一連のルールに移行するのは簡単ではありません。

代わりに、ファイル内の位置に基づくアプローチを検討することをお勧めします。特定のクックブックは通常、すべてのレシピを同じようにフォーマットします。たとえば、材料が最初に来て、次にステップのリストが続きます。これはおそらく違いを見分けるためのより簡単な方法でしょう。

于 2013-01-16T13:28:13.193 に答える