0

解析する必要のある大量のテキスト ファイル (以下を参照) があります。それらには、関連付けられたレコードを作成するために取得して使用したい章の情報が含まれています。Report has_many :chapters

基本的に、各行を読み、それぞれBookmarkTitleの章の名前をキャプチャして (CR を無視して
) をキャプチャする必要がありBookmarkPageNumberます。次に、ペアリングをまとめて新しいレコードを作成します。report.page.create(title: bookmark_title, page_number: bookmark_page_number)

IOの readlineで少し遊んだことがありますが、コンテンツをキャプチャする方法がわかりません...おそらく正規表現ですか?またはよりRails-yの方法ですか?

サンプル txt ファイル:

InfoKey: Creator
InfoValue: Adobe Acrobat 9.3.4
InfoKey: Producer
InfoValue: Adobe Acrobat 9.34 Paper Capture Plug-in
InfoKey: ModDate
InfoValue: D:20110315193536-04'00'
InfoKey: CreationDate
InfoValue: D:20110208171413-05'00'
PdfID0: 2dab1ce43882a53cbc24dbb839f921f8
PdfID1: 43b19192e920f38f65de0bf0a2be
NumberOfPages: 258
BookmarkTitle: 1980 Field Service Annual Report
BookmarkLevel: 1
BookmarkPageNumber: 3
BookmarkTitle: TABLE OF CONTENTS
BookmarkLevel: 1
BookmarkPageNumber: 4
BookmarkTitle: LIST OF EXHIBITS
BookmarkLevel: 1
BookmarkPageNumber: 7
BookmarkTitle: I - INTRODUCTION
BookmarkLevel: 1
BookmarkPageNumber: 11
BookmarkTitle: II - EXECUTIVE SUMMARY
BookmarkLevel: 1
BookmarkPageNumber: 16
BookmarkTitle: III - RESULTS AND ANALYSIS OF THE MAINTENANCE USER SURVEY
BookmarkLevel: 1
BookmarkPageNumber: 45
BookmarkTitle: IV - COMPARATIVE ANALYSIS OF BIGCO AND OTHER MAINTENANCE VENDORS
BookmarkLevel: 1
BookmarkPageNumber: 102
BookmarkTitle: V - RESULTS OF VENDOR SURVEY
BookmarkLevel: 1
BookmarkPageNumber: 127
BookmarkTitle: VI - SIGNIFICANT VENDOR ACTIVITIES, 1979-1980
BookmarkLevel: 1
BookmarkPageNumber: 190
BookmarkTitle: APPENDIX A:  DEFINITIONS
BookmarkLevel: 1
BookmarkPageNumber: 199
BookmarkTitle: APPENDIX B:  RESEARCH METHODOLOGY
BookmarkLevel: 1
BookmarkPageNumber: 204
BookmarkTitle: APPENDIX C:  SUPPORTING CHARTS
BookmarkLevel: 1
BookmarkPageNumber: 211
BookmarkTitle: APPENDIX D:  USER QUESTIONNAIRE
BookmarkLevel: 1
BookmarkPageNumber: 222
BookmarkTitle: APPENDIX E:  VENDOR QUESTIONNAIRE
BookmarkLevel: 1
BookmarkPageNumber: 237
4

1 に答える 1

1
/^BookmarkTitle:\s*(.+?)
\s*BookmarkLevel:\s*(\d+)\s*BookmarkPageNumber:\s*(\d+)\s*$/m

申し訳ありませんが、私は Ruby-On-Rails 開発者ではありませんが、その正規表現は各ブックマークに一致し、次を返します。

  • 全記録
  • タイトル(サブマッチとして)
  • レベル (サブマッチとして)
  • ページ番号 (サブマッチとして)

レベルとページ番号は、スペース、コンマ、または小数点を含まない数値であると想定しています。しかし、それは簡単に変更できます。

于 2012-09-18T20:42:01.130 に答える