1

TextWrangler にいくつかのメモを含む大きなテキスト ファイルがあり、それを正規表現で解析し、一致を MySQL インポート用の CSV ファイルに書き込みます。サンプルソースは次のとおりです。

ARCHIVE

02.09.2014 22:35 

title1
content
content
content
content

30.08.2014 18:13 

title2
content
    content with tab
    content with tab
content

...
more notes as above
...

各メモは、改行で囲まれた日付で始まり、その後にタイトルといくつかの内容行が続きます。現在、TW 検索ダイアログで次の正規表現をテストしており、Grep をチェックして、各メモの日付、タイトル、およびコンテンツ ブロックを取得しています。

\r(\d\d\.\d\d\.\d\d\d\d \d\d:\d\d)\s*\r\r(.+)(?s)((?:(?!\r\d\d\.\d\d\.\d\d\d\d \d\d:\d\d\s*\r).)*)

これが行うことは、改行で囲まれた日付を探し、次にタイトル行をキャプチャし、最後に、別の日付ブロックに遭遇しない限り、後続のすべての行をキャプチャします。後者は、非キャプチャの否定先読みを使用します。(?s)最後のステップの前に、ドット メタキャラクタにリターンを含めて DOTALL 設定を有効にします。

上記のサンプル ソースでは、検索は最初のメモでは機能しますが、2 番目のメモでは機能しません。いくつかの行はタブでインデントされています。TW に次のエラーが表示されます。

ここに画像の説明を入力

これは私が立ち往生しているところです。誰でも私にヒントを与えることができますか?

4

2 に答える 2

0

パターンをさらにテストしたところ、Regex/Grep の失敗は実際には予測できないことがわかりました。

ソース内のタブに関連しているように見えますが、バグをトリガーする他のテキストがある可能性があります。たとえば、Web URL が追加されたときに、タブを含む作業中の「メモ」セクションが失敗し始めることがわかりました。

Snow Leopard から更新された Mavericks 10.9.4 で TextWrangler 3.5.3 を使用しています。このシステムでは、Apple Mail や他のアプリでも不明な問題が多数発生しているため、TW のバグは Mavericks の問題に関連している可能性があると考えています。古いバージョンの TW を使用している理由は、左側のサイドバーが気に入らないからです。

コメントで述べたように、BBedit/TW の Grep の問題に関する質問があり、これらは PCRE 正規表現エンジン自体からではなく、BBedit コードから発生しているようです。もちろん、SOはそれを助けることはできません。

于 2014-09-19T13:28:43.293 に答える
0

コメントは許可されていません。「回答」しなければなりません…</p>

  • あなたの正規表現はTW 4.5.9(10.9.5上)でうまく機能します。
  • TW 4.5.9(10.9.5)では、「非キャプチャ」ビットが削除されても機能します。(少なくとも試合では、つまり、そのキャプチャを確認しませんでした。)
  • TW 4.5.9 では、Web URL も問題を引き起こさないようです。

もしかして

\r(\d{2}\.\d{2}\.\d{4} \d{2}:\d{2})\s*\r\r(.+\r)((.+\r)+)(?!\d{2}\.\d{2}\.\d{4} \d{2}:\d{2}\s*\r)

あなたの目的を果たします(10.9.4のTW 3.5.3でも。TW 4.5.9の先頭/末尾の改行(もちろん、実際に必要に応じて追加できます)を除いて、そのキャプチャはあなたのものと同じようです)。

于 2014-09-21T10:25:57.850 に答える