(57)【要約】【課題】  位置を考慮した文字列を探索する正規表現を容易に作成する技術を提供する。【解決手段】  サンプリングした文書の中で指定された、他のファイルを参照、または、他のファイルから参照可能とする識別子の箇所の、サンプルとなる箇所より、正規表現を作成する。正規表現は、中央部正規表現、前方部正規表現、後方部正規表現をそれぞれ作成し、作成した結果を連結することで最終形を完成させる。中央部正規表現は、識別子のサンプル箇所から、共通部分として受け付けた値と、変動部分の文字数の固定、または、変動の設定で受け付けた値、により作成する。前方部正規表現と、後方部正規表現は、サンプリングした文書より、アプリケーション上で入力された文字列と、その文字列に設定された書式の情報の名称を取得することにより作成したテキストの情報により、作成する。【選択図】  図４
2018092283.tif 000002
【特許請求の範囲】
【請求項１】
正規表現を作成する情報処理装置であって、
識別子を含むファイルから、所定の識別子を抽出する第１の正規表現を作成する第１の正規表現作成手段と、
前記識別子ごと周辺文字列情報をそれぞれ取得し、それぞれ取得した前記周辺文字列から、前記第１の正規表現を作成する識別子ごとに対応する周辺文字列情報を作成する文字列情報作成手段と、
前記周辺文字列情報を用いて第２の正規表現を作成する第２の正規表現作成手段と、
前記第１の正規表現と前記第２の正規表現を結合した第３の正規表現を作成する第３の正規表現作成手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記第２の正規表現作成手段は、前記周辺文字列情報のうち、前記第１の正規表現を作成する識別子の前方文字列情報より正規表現を作成すること
を特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第２の正規表現作成手段は、更に、前記周辺文字列情報のうち、前記第１の正規表現を作成する識別子の後方文字列情報より正規表現を作成すること
を特徴とする請求項１または請求項２に記載の情報処理装置。
【請求項４】
前記第２の正規表現作成手段は、前記周辺文字列が相互に異なる場合、前記第１の正規表現を作成する識別子から見て近い、前記周辺文字列から正規表現を試行している回数から１を引いた文字数の文字列より、前記第２の正規表現を作成し、前記第３の正規表現作成手段は、前記試行ごとに前記第３の正規表現を作成すること
を特徴とする請求項１ないし請求項３のいずれか１項に記載の情報処理装置。
【請求項５】
前記情報処理装置は、更に、
前記識別子を、前記第３の正規表現を作成するにあたり、予め、サンプル識別子として選択を受け付けるサンプル識別子受付手段、
を備えることを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記第３の正規表現作成手段により作成した前記第３の正規表現により抽出される識別子が、前記サンプル識別子受付手段で受け付けた前記サンプル識別子を抽出しているか否かを、前記正規表現を試行している回数ごとに判定する判定手段と、
前記判定手段により、前記第３の正規表現作成手段により作成した前記第３の正規表現により抽出される識別子が、前記サンプル識別子受付手段で受け付けた前記サンプル識別子を抽出していると判定した場合、前記第３の正規表現作成手段で作成した前記第３の正規表現を、文書を相互に参照可能に関連付けする箇所である識別子を抽出可能な正規表現、として提供する正規表現提供手段と、
を備えることを特徴とする請求項５のいずれか１項に記載の情報処理装置。
【請求項７】
正規表現を作成する情報処理装置の制御方法であって、
第１の正規表現作成手段が、識別子を含むファイルから、所定の識別子を抽出する第１の正規表現を作成する第１の正規表現作成ステップと、
文字列情報作成手段が、前記識別子ごと周辺文字列情報をそれぞれ取得し、それぞれ取得した前記周辺文字列から、前記第１の正規表現を作成する識別子ごとに対応する周辺文字列情報を作成する文字列情報作成ステップと、
前記周辺文字列情報を用いて第２の正規表現を作成する第２の正規表現作成手段と、
第３の正規表現作成手段が、前記第１の正規表現と前記第２の正規表現を結合した第３の正規表現を作成する第３の正規表現作成ステップと、
を含むことを特徴とする情報処理装置の制御方法。
【請求項８】
正規表現を作成する情報処理装置において実行可能なプログラムであって、
前記情報処理装置を、
識別子を含むファイルから、所定の識別子を抽出する第１の正規表現を作成する第１の正規表現作成手段と、
前記識別子ごと周辺文字列情報をそれぞれ取得し、それぞれ取得した前記周辺文字列から、前記第１の正規表現を作成する識別子ごとに対応する周辺文字列情報を作成する文字列情報作成手段と、
前記周辺文字列情報を用いて第２の正規表現を作成する第２の正規表現作成手段と、
前記第１の正規表現と前記第２の正規表現を結合した第３の正規表現を作成する第３の正規表現作成手段と、
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文書内に付与する参照先、または、参照元、となる場所を特定するための正規表現の作成方法に関する。
【背景技術】
【０００２】
１つの業務で作成されるドキュメントや、１つの開発で作成されるソースコードは、ファイル単位で複数存在することがある。また、これらのファイルは、その業務や、開発において、別のファイルを参照することがある。また、相互に参照し合うこともある。
【０００３】
例えば、ある業務において作成した文書Ａは、別の文書Ｂを参考にすると良いものである場合、文書Ａから文書Ｂを、参照出来るようにすることがある。一例として、設計書を作成した場合、要件定義書、外部設計書、内部設計書という文書が一般的には作成されることが多いが、この場合、それぞれにおける文書は独立した文書ということは殆どなく、内部設計書の文書Ａに記載されているものは、外部設計書の文書Ｂに紐付く内容であり、また、さらにその文書Ｂは、要件定義書の文書Ｃに紐付く、内容である場合があるため、相互にこれらを参照できるようにする場合がある。
【０００４】
また、ある開発において作成されたシステムのソースコードにおいて、ファイル単位で作成されたモジュールＡが、モジュールＢから呼ぶことがある。このように、システム開発においては、プログラムを、機能ごとにモジュール単位で作成し、そのモジュールを、また別のプログラムであるモジュールが呼び出すように、作成する。
【０００５】
このような関連状況を把握することを行うツールとして、トレーサビリティ管理ツールがある。
【０００６】
このツールは、ドキュメントや、ソースコードである既存の成果物を相互に参照可能にするために成果物の中に埋め込まれた、識別子とする箇所、をトレーサビリティ管理ツールが解析することにより、どのファイルがどのファイルと関連しあっているのかを分析することが出来る。
【０００７】
この、トレーサビリティ管理ツールが既存の成果物から、識別子とする箇所、を抽出するにあたっては、正規表現を使用する。また、ユーザが指定した正規表現にマッチングする文字列を、識別子とする箇所、と認識する。従って、ユーザは、識別子とする箇所（関連付けを行いたい箇所）、のみにマッチングする正規表現を指定する必要がある。
【０００８】
しかし、多くのユーザは正規表現にあまり詳しくないのが現実である。このため、正規表現を記述することに難しさを感じているユーザが存在する。
【０００９】
また、正規表現を記載しそれを用いて、識別子とする箇所の文字列を探索したとしても、探索した文字列が、他の文書へ参照を可能する文字列、であれば、そこは識別子として良い箇所であるが、同じ識別子の文字列であっても、他の文書へ参照を可能としない文字列であれば、そこは参照を可能とする識別子とはしたくない箇所である、ということになる。そのため、識別子と同じ文字列を探索するための正規表現を単純に作成すれば良いというのではなく、識別子とする文字列が存在する位置等を考慮して作成しなくてはならないということになる。
【００１０】
正規表現に関する技術として、特許文献１においては、サーバなどの情報機器の動作やアクセスの履歴、セキュリティ機器やソフトウェアが記録するイベントの履歴、ネットワーク上の通信履歴、電子メールの送受信履歴等、収集したログを分析するための、正規表現の作成方法が記載されている。
【００１１】
また、特許文献２には、ＨＴＭＬ文書中の所望の可変テキスト部分を検索または抽出する正規表現について記載されている。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２００８−１４６１６２号公報
【特許文献２】特開２０１５−２８６９９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
特許文献１の正規表現の作成方法によると、抽出対象の前後情報に存在する情報を考慮した正規表現が作成できない。また、成果物の識別情報は、継続的に追加、削除されるものなので、正規表現による上限下限の範囲指定は意味がないと考えられる。
【００１４】
また、特許文献２の正規表現の作成方法においては、抽出する対象は可変という考え方で、その前後のＨＴＭＬタグ構成に注目し正規表現を作成しているが、抽出対象となる識別情報の体系やルールを考慮した正規表現が作成できない。
【００１５】
また、ユーザは、解析対象の成果物に存在する全ての抽出対象を選択する必要があり、作業負荷が高い。さらに、ＨＴＭＬソースから、抽出対象の前後情報（ＨＴＭＬタグ）を含んだ形で選択する必要がある。そして目的の正規表現が作成されなかった場合、ユーザは、前後情報（ＨＴＭＬタグ）の範囲を広げる、狭める等の判断を行い、再度全ての抽出対象を選択する必要があり、作業負荷が高い。そのため、ＨＴＭＬ不慣れなユーザには負担が大きい、と考えられる。
【００１６】
これらの背景から、正規表現詳しくないユーザでも、成果物において関連付けを行いたい箇所のみにマッチングする正規表現を作成できるようにすることが必要であると考えられる。
【００１７】
そこで、本発明の目的は、位置を考慮した文字列を探索する正規表現を容易に作成することを目的とする。
【課題を解決するための手段】
【００１８】
本発明は、正規表現を作成する情報処理装置であって、識別子を含むファイルから、所定の識別子を抽出する第１の正規表現を作成する第１の正規表現作成手段と、前記識別子ごと周辺文字列情報をそれぞれ取得し、それぞれ取得した前記周辺文字列から、前記第１の正規表現を作成する識別子ごとに対応する周辺文字列情報を作成する文字列情報作成手段と、前記周辺文字列情報を用いて第２の正規表現を作成する第２の正規表現作成手段と、前記第１の正規表現と前記第２の正規表現を結合した第３の正規表現を作成する第３の正規表現作成手段と、を備えることを特徴とする。
【発明の効果】
【００１９】
本発明によれば、位置を考慮した文字列を探索する正規表現を容易に作成することが可能となる。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施形態における、文書管理システムのシステム構成の一例を示す図である。
【図２】本発明の実施形態における、処理端末１０１、文書管理サーバ１０３のハードウェア構成の一例を示すブロック図である。
【図３】本発明の実施形態における、文書管理システムの機能構成の一例を示す図である。
【図４】本発明の実施形態における、正規表現を作成する全体処理の一例を示すフローチャートである。
【図５】本発明の実施形態における、正規表現を作成する処理の一例を示すフローチャートである。
【図６】本発明の実施形態における、作成した正規表現が正常か否かの確認を行う処理の一例を示すフローチャートである。
【図７】本発明の実施形態における、前方部の正規表現を作成する処理の一例を示すフローチャートである。
【図８】本発明の実施形態における、後方部の正規表現を作成する処理の一例を示すフローチャートである。
【図９】本発明の実施形態における、正規表現を作成するためにサンプル文書の指定を行う画面の一例を示す図である。
【図１０】本発明の実施形態における、指定を受け付けたサンプル文書の中でサンプリング範囲の指定を行う画面の一例を示す図である。
【図１１】本発明の実施形態における、指定を受け付けたサンプリング範囲において、他のファイルを参照、または、他のファイルから参照可能にする識別子とする箇所のサンプルとなる箇所の選択を受け付ける画面の一例を示す図である。
【図１２】本発明の実施形態における、識別子の中でサンプルとする箇所より、共通部分の受け付けと、変動部分の属性の設定を受け付ける画面の一例を示す図である。
【図１３】本発明の実施形態における、正常に作成された正規表現を表示する画面と、その正規表現の指定を受け付ける画面の一例を示す図である。
【図１４】本発明の実施形態における、正常な正規表現が作成されなかった場合に、これまで作成した正規表現により、サンプリングした文書の中でマッチングする箇所を確認するための画面の一例を示す図である。
【図１５】本発明の実施形態における、システムコントロールテーブルの一例を示す図である。
【図１６】本発明の実施形態における、解析対象テーブルの一例を示す図である。
【図１７】本発明の実施形態における、サンプリング範囲テーブルの一例を示す図である。
【図１８】本発明の実施形態における、サンプリング情報テーブルの一例を示す図である。
【図１９】本発明の実施形態における、共通部テーブルの一例を示す図である。
【図２０】本発明の実施形態における、正規表現生成結果テーブルの一例を示す図である。
【図２１】本発明の実施形態における、抽出結果テーブルの一例を示す図である。
【図２２】本発明の実施形態における、サンプリング範囲の文書の情報より、アプリケーション上で入力された文字列と、その文字列に設定された書式の情報の名称を取得し、テキスト形式で保存した情報の一例を示す図である。
【図２３】本発明の実施形態における、文書を相互に関連付いたものにし、それらが関連付いていることを表示するための処理の一例を示すフローチャートである。
【図２４】本発明の実施形態における、相互に関連付いた文書の関連状況を表示するための画面の一例を示す図である。
【図２５】本発明の実施形態における、アプリケーション上で入力された文字列と、その文字列に書式を設定する方法の一例を示す図である。
【図２６】本発明の実施形態における、指定を受け付けたサンプリング範囲において、他のファイルを参照、または、他のファイルから参照可能にする識別子とする箇所のサンプルとなる箇所の選択を受け付ける画面の一例を示す図である。
【図２７】本発明の実施形態における、サンプリング範囲の文書の情報より、アプリケーション上で入力された文字列と、その文字列に設定された書式の情報の名称を取得し、テキスト形式で保存した情報の一例を示す図である。
【図２８】本発明の実施形態における、サンプリング情報テーブルの一例を示す図である。
【図２９】本発明の実施形態における、抽出結果テーブルの一例を示す図である。
【図３０】本発明の実施形態における、正規表現生成結果テーブルの一例を示す図である。
【発明を実施するための形態】
【００２１】
以下、図面を参照して、本発明の実施形態を詳細に説明する。
【００２２】
図１は、本発明の実施形態のシステム構成の一例を示す図である。本発明の実施形態のシステムは、処理端末１０１、文書管理サーバ１０３が、ネットワーク１０２を介して接続される構成となっている。
【００２３】
処理端末１０１は、文書管理サーバ１０３に対して、正規表現作成処理を指示する、また、文書管理サーバ１０３で作成された正規表現の結果を処理端末側で確認するインタフェースを有するアプリケーションを操作することを可能とする。
【００２４】
文書管理サーバ１０３は、正規表現の作成の指示を処理端末１０１より、受け付け、その結果を、処理端末１０１よりに返す。
【００２５】
なお、この文書管理サーバ１０３は、以下を前提条件とする。
【００２６】
もともと、文書管理サーバ１０３は、文書が複数登録されていて、それらの文書どうしを相互に参照可能にするための識別子を入力することによって、相互に参照可能にする機能を有していることとする。すなわち、文書の中に、参照元から移動を可能とする参照先、と、参照先へ移動を可能とする参照元の識別子を入力することが可能であり、参照先と参照元を相互に関連付けることが出来るということである。
【００２７】
また、文書内に入力された識別子のうち、相互に参照可能にする箇所として指定された箇所のみ、別ファイルへ参照が可能となることが前提となる。
【００２８】
また、その相互に参照可能にする箇所として指定する箇所は、ユーザによって作成された正規表現により、指定されていることが前提となる。そのため、本発明では、この正規表現を文書管理サーバ側で作成し、ユーザ側に提供することとする。
【００２９】
さらに図２３の処理図や、画面イメージを用いて説明をする。
【００３０】
ステップＳ２３０１において、文書同士、参照関係を保持する対象となるファイルの選択を受け付ける。
【００３１】
ステップＳ２３０２において、ステップＳ２３０１で選択したファイルへの、参照関係の設定を受け付ける。
【００３２】
ステップＳ２３０３において、ファイル内への参照関係を保持するための識別子を特定するための、成果物解析用定義設定を行う。成果物解析用定義設定の画面は、一例として、図９、９１０に示す成果物解析用定義９１０の画面で行うことを可能とする。
【００３３】
要件識別子抽出用正規表現の入力領域９１１（要件識別子抽出用正規表現９１１）においては、参照先（参照される側）の識別子を確定するための正規表現を入力する領域である。ここに、現状では、ユーザが作成した正規表現の入力を受け付けている。
【００３４】
また、参照識別子抽出用正規表現の入力領域９１２（参照識別子抽出用正規表現９１２）においては、参照元（参照する側）の識別子を確定するための正規表現を入力する領域である。ここに、現状では、ユーザが作成した正規表現の入力を受け付けている。
【００３５】
なお、要件識別子抽出用正規表現９１１、参照識別子抽出用正規表現９１２、正規表現が入力された状態で、保存９１３のボタンを押下すると、文書内において、参照関係を保持するための識別子となる箇所が指定さる。なお、このステップの処理は、解析対象となるファイル分行われることとする。
【００３６】
ステップＳ２３０４において、参照関係の紐付けが正常に終了したか否かを表示するために、解析結果表示画面を表示する。例えば、図２４に図示するような画面で、ファイル同士が参照しているか否かを矢印で図示することにより表示する。図２４は、矢印が正常に参照元から参照先を指しているため、正常に参照関係が保持されている状態であるとする。
【００３７】
なお、本発明は、ステップＳ２３０３において、正規表現がユーザによって作成されているのを、文書管理サーバが作成してユーザ側に提供することである。
【００３８】
また、この文書管理サーバの正規表現の作成機能については、文書管理サーバとは別の筐体のサーバで行って処理端末１０１へ結果を返しても良いこととする。
【００３９】
データベース１０４は、本発明を実施するにあたり必要となる各種テーブルが存在する箇所となる。一例として、文書管理サーバ１０３に、データベース１０４を存在させても良いが、文書管理サーバ１０３から独立したサーバに存在させても良いこととする。この場所については限定しない。
【００４０】
図２は、本発明の実施形態における処理端末１０１、文書管理サーバ１０３、のハードウェア構成の一例を示すブロック図である。
【００４１】
図２に示すように、情報処理装置は、システムバス２０４を介してＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０２、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０３、入力コントローラ２０５、ビデオコントローラ２０６、メモリコントローラ２０７、よび通信Ｉ／Ｆコントローラ２０８が接続される。
【００４２】
ＣＰＵ２０１は、システムバス２０４に接続される各デバイスやコントローラを統括的に制御する。
【００４３】
ＲＯＭ２０２あるいは外部メモリ２１１は、ＣＰＵ２０１が実行する制御プログラムであるＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）やＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）や、本情報処理方法を実現するためのコンピュータ読み取り実行可能なプログラムおよび必要な各種データ（データテーブルを含む）を保持している。
【００４４】
ＲＡＭ２０３は、ＣＰＵ２０１の主メモリ、ワークエリア等として機能する。ＣＰＵ２０１は、処理の実行に際して必要なプログラム等をＲＯＭ２０２あるいは外部メモリ２１１からＲＡＭ２０３にロードし、ロードしたプログラムを実行することで各種動作を実現する。
【００４５】
入力コントローラ２０５は、入力デバイス２０９や不図示のマウス等のポインティングデバイス等の入力装置からの入力を制御する。入力装置がタッチパネルの場合、ユーザがタッチパネルに表示されたアイコンやボタンに合わせて押下（指等でタッチ）することにより、各種の指示を行うことができることとする。
【００４６】
また、タッチパネルは、マルチタッチスクリーンなどの、複数の指でタッチされた位置を検出することが可能なタッチパネルであってもよい。
【００４７】
ビデオコントローラ２０６は、ディスプレイ２１０などの外部出力装置への表示を制御する。ディスプレイは本体と一体になったノート型パソコンのディスプレイも含まれるものとする。なお、外部出力装置はディスプレイに限ったものははく、例えばプロジェクタであってもよい。また、前述のタッチ操作を受け付け可能な装置については、入力装置も提供する。
【００４８】
なおビデオコントローラ２０６は、表示制御を行うためのビデオメモリ（ＶＲＡＭ）を制御することが可能で、ビデオメモリ領域としてＲＡＭ２０３の一部を利用することもできるし、別途専用のビデオメモリを設けることも可能である。
【００４９】
メモリコントローラ２０７は、外部メモリ２１１へのアクセスを制御する。外部メモリとしては、ブートプログラム、各種アプリケーション、フォントデータ、ユーザファイル、編集ファイル、および各種データ等を記憶する外部記憶装置（ハードディスク）、フレキシブルディスク（ＦＤ）、或いはＰＣＭＣＩＡカードスロットにアダプタを介して接続されるコンパクトフラッシュ（登録商標）メモリ等を利用可能である。
【００５０】
通信Ｉ／Ｆコントローラ２０８は、ネットワークを介して外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、ＴＣＰ／ＩＰを用いた通信やＩＳＤＮなどの電話回線、および携帯電話の３Ｇ回線を用いた通信が可能である。
【００５１】
尚、ＣＰＵ２０１は、例えばＲＡＭ２０３内の表示情報用領域へアウトラインフォントの展開（ラスタライズ）処理を実行することにより、ディスプレイ２１０上での表示を可能としている。また、ＣＰＵ２０１は、ディスプレイ２１０上の不図示のマウスカーソル等でのユーザ指示を可能とする。
【００５２】
次に図３を参照して、本発明の実施形態における各種装置の機能構成の一例について説明する。
【００５３】
文書管理サーバ１０３は、サンプル文書受付部、サンプル識別子受付部、テキスト情報作成部、共通部・変動部受け付け部、正規表現作成部、正規表現チェック部からなる。
【００５４】
サンプル文書受付部は、処理端末１０１より、正規表現により、他のファイルを参照、または、他のファイルから参照可能にする識別子とする箇所を特定する文書の選択を処理端末１０１より受け付ける。
【００５５】
サンプル識別子受付部は、処理端末１０１より、サンプル文書受付部で受け付けた文書より、他のファイルを参照、または、他のファイルから参照可能にする識別子とする箇所のサンプルとなる箇所の選択を受け付ける。
【００５６】
テキスト情報作成部は、サンプル文書受け付け部で受け付けた文書より、アプリケーション上で入力された文字列と、その文字列に設定された書式の情報の名称を取得し、テキスト形式で保存する。
【００５７】
共通部・変動部受け付け部は、サンプル識別子受付部で受け付けた、他のファイルを参照、または、他のファイルから参照にする識別子とする箇所のサンプルとなる箇所より、共通部分の文字列の指定と、変動部分の文字列数の固定、または、変動のいずれかの指定を、処理端末１０１より受け付ける。
【００５８】
正規表現作成部は、共通部・変動部受け付け部で受け付けた情報により、中央部正規表現を作成する。続いて、テキスト情報作成部において取得した情報をもとに、サンプルの識別子で箇所から見て近い前方文字から、正規表現を試行する回数から１マイナスした数の文字数分の文字列より、前方部正規表現を作成する。さらに、テキスト情報作成部において取得した情報をもとに、サンプルの識別子で箇所から見て近い後方文字から、正規表現を試行する回数から１マイナスした数の文字数分の文字列より、後方部正規表現を作成する。
【００５９】
この前方部正規表現、後方部席表現、中央部正規表現を連結することにより、最終的な正規表現を作成する。
【００６０】
正規表現チェック部は、正規表現作成部で作成した、正規表現が、サンプル識別子受付部で受け付けたサンプルの識別子となる箇所のみにマッチングする表現であるか、否かを確認する。なお、正規表現が、サンプル識別子受付部で受け付けたサンプルの識別子となる箇所以外、のサンプルの識別子と同じ文字列にもマッチングする表現で有る場合、正規表現を再度作成しなおす。なお、作成のし直しは、最大試行回数分、作成することを可能とする。
【００６１】
処理端末１０１は、サンプル文書選択部、サンプル識別子選択部、共通部・変動部指示部からなる。
【００６２】
サンプル文書選択部は、正規表現により、他のファイルを参照、または、他のファイルから参照可能にする識別子とする箇所を特定する文書の選択を行う。
【００６３】
サンプル識別子選択部は、サンプル文書選択部で選択した文書より、他のファイルを参照、または、他のファイルから参照可能にする識別子とする箇所のサンプルとなる箇所の選択を行う。
【００６４】
共通部・変動部指示部は、サンプル識別子選択部で選択した、他のファイルを参照、または、他のファイルから参照可能にする識別子とする箇所のサンプルとなる箇所より、共通部分の文字列の指定と、変動部分の文字列数の固定、または、変動のいずれかの指定を行う。
【００６５】
次に図４〜図８のフローチャートを用いて、本発明の実施形態における各処理について説明する。なお、図４〜図８の処理は、文書管理サーバ１０３のＣＰＵ２０１が行うこととする。
【００６６】
図４は、本発明における正規表現を作成するためのメインとなるフローチャートである。
【００６７】
ステップＳ１０１において、ユーザから、正規表現を作成するための識別子が記述されたファイルの選択を、ファイル選択ダイアログ９００の画面において受け付ける。
【００６８】
例えば、図９、９０１の「コンピューター＞ローカルディスク（Ｄ：）＞販売管理システム＞１＿要件定義書＞Ｖｅｒ＿１＿０＞」に存在する、図９、９０２のファイル「要件定義書．ｄｏｃ」を選択を、選択９０３のボタンの押下を受け付けることにより、受け付けることとする。
【００６９】
なお、このファイル選択ダイアログ９００の画面は、成果物解析用定義９１０の呼出９１４のボタンの押下を受け付けることにより、起動することとする。
【００７０】
ステップＳ１０２において、今回作成する正規表現に関連する番号をプロジェクト番号として採番する。
【００７１】
一例として、ＰＲＪ０００００００００１として採番することとする。
【００７２】
ステップＳ１０３において、ステップＳ１０１で選択を受け付けたファイルの情報を図１６の解析対象テーブル１６００に書き込む。
【００７３】
例えば、解析対象テーブル１６００のプロジェクト番号１６０１に、ステップＳ１６０２で採番した「ＰＲＪ０００００００００１」の値を、ドキュメントパス１６０２に、ステップＳ１０１で受け付けたファイルのドキュメントパスの情報である「コンピューター＞ローカルディスク（Ｄ：）＞販売管理システム＞１＿要件定義書＞Ｖｅｒ＿１＿０＞」の値（図９、９０１の値）を登録する。
【００７４】
ステップＳ１０４において、サンプリング範囲の選択を受け付けるための画面を表示し、正規表現を作成するにあたって、ステップＳ１０１で選択を受け付けたファイルの中より、他の文書から、参照可能とする識別子を含む部分の選択を受け付ける。すなわち、識別子を、第３の正規表現を作成するにあたり、予め、サンプル識別子として選択を受け付ける。
【００７５】
例えば、サンプリング範囲の選択を受け付けるための画面としては、図１０の１０００の画面を表示する。そして、一例として図１０、１００１の箇所をサンプリング範囲として受け付け、保存１００５のボタンの押下を受け付けることにより、サンプリング範囲の選択を受け付が完了する。なお、図１０の「□」の文字で表現されている箇所は、任意の文字が入力されているものとする。
【００７６】
ステップＳ１０５において、ステップＳ１０４で選択を受け付けたサンプリング範囲をサンプリング範囲テーブル１７００に登録する。
【００７７】
サンプリング範囲テーブル１７００は、プロジェクト番号１７０１、ＳＥＱ１７０２、開始位置（ページ）１７０３、終了位置（ページ）１７０４、開始位置（行数）１７０５、終了位置（行数）１７０６の項目からなる。
【００７８】
プロジェクト番号１７０１には、今回作成する正規表現に関連する番号として採番されたプロジェクト番号の値が登録される。
【００７９】
ＳＥＱ１７０２には、プロジェクト番号に紐づいてサンプリングされた箇所の順番の値が登録される。
【００８０】
開始位置（ページ）１７０３には、サンプリングを開始されたページの値が登録される。
【００８１】
終了位置（ページ）１７０４には、サンプリングを終了したページの値が登録される。
【００８２】
開始位置（行数）１７０５には、サンプリングを開始した行数の値が登録される。
【００８３】
終了位置（行数）１７０６には、サンプリングを終了した行数の値が登録される。
【００８４】
一例として、図１０の１００１の範囲がサンプリングされた場合、図１７のサンプリング範囲テーブル１７００へは、プロジェクト番号１７０１へは、ステップＳ１０２で採番した「ＰＲＪ０００００００００１」の値を、ＳＥＱ１７０２へは「１」を、開始位置（ページ）１７０３には「４（ページ）」の値を、終了位置（ページ）１７０４には「４（ページ）」の値を、開始位置（行数）１７０５には「１（行目）」の値を、終了位置（行数）１７０６には「１６（行目）」の値を、登録することとする。
【００８５】
ステップＳ１０６において、ステップＳ１０４で受け付けたサンプリング範囲より、正規表現を作成するために必要となる識別子の選択を受け付けるための、サンプリング画面を表示する。例えば、図１１のサンプリング画面１１００を表示する。
【００８６】
ステップＳ１０７において、ステップＳ１０６により表示したサンプリング画面において、正規表現を作成するために必要となる識別子の選択を受け付ける。例えば、ステップＳ１０６においてサンプリング画面１１００を表示した場合、正規表現を作成するために必要となる識別子である、１１０１の「ＲＥＱ＿００１」と１１０２「ＲＥＱ＿００２」の選択を受け付け、保存１１０３のボタンの押下を受け付けることにより、選択の受け付けが完了する。
【００８７】
ステップＳ１０８において、ステップＳ１０４で受け付けた、サンプリング範囲の文書の情報より、アプリケーション上で入力された文字列と、その文字列に設定された書式の情報の名称をアプリケーション側より取得し、テキスト形式で保存する。すなわち、識別子ごと周辺文字列情報をそれぞれ取得し、それぞれ取得した周辺文字列から、第１の正規表現を作成する識別子ごとに対応する周辺文字列情報を作成する。
【００８８】
アプリケーション上で入力された文字列に対して、文字の大きさ、フォント、インデントによる文字位置、等の見た目のスタイルを変更するための機能として、一般に書式の設定機能が存在する。この書式には、名称が付いており、この名称の情報を取得することとする。
【００８９】
例えば、文章作成アプリケーションによって図２５の２５００に図示するような文面が作成した場合、図２５の２５０１の「第１章」の箇所に対し、図２５の２５０２に図示するような書式の設定を行うことが出来る。一例として、２５０２では、名称はＳＨＯＳＨＩＫＩ＿１、フォントはゴシック、大きさは１２Ｐ、（中央揃え、左揃え、右揃えを行う）位置は設定なし、装飾は、文字の上下に対し、罫線を引く設定がなされており、インデントは「０ｍｍ」という設定が行われている。
【００９０】
この２５０１の文字列の場合、アプリケーション上で入力された文字列として、「第１章」を取得し、その文字列に設定された書式の情報の名称は、「第１章」に設定された書式の設定である２５０２の中の、名称が設定される領域である２５０３の情報（ＳＨＯＳＨＩＫＩ＿１）を、取得することとなる。
【００９１】
なお、サンプリグした文書が図１０の１００１である場合、２２の２２００のような情報をテキスト情報として保存することとなる。２２０１は、アプリケーション上で入力された文字列に設定された書式の情報の名称の情報であり、２２０１以外の右側の部分は、サンプリング範囲として指定した文書範囲における、アプリケーション上で入力された文字列情報ということになる。
【００９２】
ステップＳ１０９において、図１８のサンプリング情報テーブル１８００に、ステップＳ１０７で選択を受け付けた、正規表現を作成するために必要となる識別子の情報を登録する。
【００９３】
サンプリング情報テーブル１８００は、プロジェクト番号１８０１、ＳＥＱ１８０２、サンプリング内容１８０３、開始位置（ページ）１８０４、終了位置（ページ）１８０５、開始位置（行数）１８０６、終了位置（行数）１８０７、前方２０文字１８０８、後方２０文字１８０９、開始位置（左からの文字位置）１８１０からなる。
【００９４】
プロジェクト番号１８０１には、今回作成する正規表現に関連する番号として採番されたプロジェクト番号の値が登録される。
【００９５】
ＳＥＱ１８０２には、プロジェクト番号に紐づいてサンプリングされた識別子の箇所の順番の値が登録される。
【００９６】
サンプリング内容１８０３には、ステップＳ１０７でサンプリングされた識別子の値が登録される。
【００９７】
開始位置（ページ）１８０４には、サンプリングされた識別子が存在する最初のページの値が登録される。
【００９８】
終了位置（ページ）１８０５には、サンプリングされた識別子が存在する最後のページの値が登録される。
【００９９】
開始位置（行数）１８０６には、サンプリングされた識別子が存在を開始した行、の行数の値が登録される。
【０１００】
終了位置（行数）１８０７には、サンプリングされた識別子が存在を終了した行、の行数の値が登録される。
【０１０１】
前方２０文字１８０８には、サンプリング内容１８０３の前方２０文字を、ステップＳ１０８で作成したテキスト情報より取得し、その値を登録する。
【０１０２】
後方２０文字１８０９には、サンプリング内容１８０３の後方２０文字を、ステップＳ１０８で作成したテキスト情報より取得し、その値を登録する。
【０１０３】
開始位置（左からの文字位置）１８１０は、サンプリングされた識別子が存在を開始した行の中における、存在する位置を左からの文字数の位置で登録する。
【０１０４】
例えば、サンプリング画面１１００の、１１０１の「ＲＥＱ＿００１」と１１０２「ＲＥＱ＿００２」の選択を受け付けた場合、１１０１は、サンプリング情報テーブル１８００の１８１１、１１０２は、サンプリング情報テーブル１８００の１８１２のように登録がされる。
【０１０５】
１１０１の「ＲＥＱ＿００１」の場合、１８０１には、プロジェクト番号として、プロジェクト番号１７０１に登録した値と同じく、「ＰＲＪ０００００００００１」を登録する。
【０１０６】
ＳＥＱ１８０２には、プロジェクト番号に紐づいてサンプリングされた識別子の箇所の順番として、「１」を登録する。
【０１０７】
サンプリング内容１８０３には、１１０１の「ＲＥＱ＿００１」の値が登録される。
【０１０８】
また、開始位置（ページ）１８０４として「４」、終了位置（ページ）１８０５として「４」、開始位置（行数）１８０６として「３」、終了位置（行数）１８０７として「３」、を登録する。
【０１０９】
前方２０文字１８０８には、テキスト情報より、２２０２の箇所を、ＴＡＧ＿ＩＤ１＋タブ文字１文字の値として、登録する。ＴＡＧ＿ＩＤ１の後ろに空白があるが、一例としてここでは、タブ文字が含まれていることとする。
【０１１０】
後方２０文字１８０９には、テキスト情報より、２２０３の箇所を、改行文字１文字の値として、登録する。１１０１ＲＥＱ＿００１の後方文字列には、実際、改行が行われているためここでは、改行文字１文字が含まれることとする。
【０１１１】
開始位置（左からの文字位置）１８１０として「１」の値を登録する。
【０１１２】
１１０２の「ＲＥＱ＿００２」の場合、１８０１には、プロジェクト番号として、プロジェクト番号１７０１に登録した値と同じく、「ＰＲＪ０００００００００１」を登録する。
【０１１３】
ＳＥＱ１８０２には、プロジェクト番号に紐づいてサンプリングされた識別子の箇所の順番として、「２」を登録する。
【０１１４】
サンプリング内容１８０３には、１１０２の「ＲＥＱ＿００２」の値が登録される。
【０１１５】
また、開始位置（ページ）１８０４として「４」、終了位置（ページ）１８０５として「４」、開始位置（行数）１８０６として「９」、終了位置（行数）１８０７として「９」、を登録する。
【０１１６】
前方２０文字１８０８には、テキスト情報より、２２０４の箇所を、ＴＡＧ＿ＩＤ２＋タブ文字１文字の値として、登録する。ＴＡＧ＿ＩＤ２の後ろに空白があるが、一例としてここでは、タブ文字が含まれていることとする。
【０１１７】
後方２０文字１８０９には、テキスト情報より、２２０５の箇所を、半角スペース１文字＋１２ページ参照＋改行文字１文字の値として、登録する。１１０２ＲＥＱ＿００２の後方文字列には、１例として、１２ページ参照の文字の前に、半角スペース１文字、１２ページ参照の文字の後に、改行文字１文字が含まれることとする。
【０１１８】
ステップＳ１１０において、図１２の共通部・変動部指定画面１２００の表示を行い、ステップＳ１０７で指定した識別子の共通部と変動部の指定を受け付ける。なお、本ステップで行う指定は、後の正規表現を作成するために必要となる情報であることとする。
【０１１９】
例えば、共通部については、ステップＳ１０７でＲＥＱ＿００１（１１０１）とＲＥＱ＿００２（１１０２）をサンプリングした識別子として指定した場合、共通部・変動部指定画面１２００の１２０１に図示するように、表示を行う。そして、ユーザより、１２０２の共通部の入力エリアにおいて、ＲＥＱ＿００１とＲＥＱ＿００２の共通する文字列である、「ＲＥＱ＿」（１２０３）の入力を受け付ける。
【０１２０】
また、変動部については、１２０１の抽出対象の中で、共通部１２０２で指定した箇所以外の部分の文字列の文字数が、変動するか否か、の選択を１２０４の変動部の箇所において受け付ける。文字列（文字、あるいは数値でも可）の文字数が固定である場合、１２０５の固定を選択状態にする。文字列（文字、あるいは数値でも可）の文字数が変動する場合、１２０６の変動を選択状態にする。なお、１１０１と１１０２をサンプリングした場合、変動部は固定とし、１２０５の固定を選択状態にしておくこととする。
【０１２１】
その後、保存１２０７のボタンの押下を受け付けることにより、共通部と変動部の指定を受け付けが完了する。
【０１２２】
ステップＳ１１１において、ステップＳ１１０で受け付けた共通部の情報を、図１９の共通部テーブル１９００に登録する。
【０１２３】
共通部テーブル１９００は、プロジェクト番号１９０１、共通部１９０２、固定フラグ１９０３からなる。
【０１２４】
プロジェクト番号１９０１には、今回作成する正規表現に関連する番号として採番されたプロジェクト番号の値が登録される。
【０１２５】
共通部１９０２には、ステップＳ１１０において、共通部１２０２で指定した共通部の値が登録される。
【０１２６】
固定フラグ１９０３には、固定１２０５が選択された場合は、「１」を、変動１２０６が選択された場合は、「０」を登録する。
【０１２７】
例えば、図１２に図示する内容で指定した場合は、共通部テーブル１９００の１９１０のレコードが登録されることとなる。プロジェクト番号１９０１には、プロジェクト番号１８０１と同じ「ＰＲＪ０００００００００１」が登録され、共通部１９０２には、図１２の１２０３で入力された「ＲＥＱ＿」の値が登録され、固定フラグ１９０３には、図１２では固定１２０５が選択状態であるため、「１」の値が登録される。
【０１２８】
ステップＳ１１２において、正規表現を作成する処理を行う。この処理の詳細については、図５の処理フローにおいて行うこととする。
【０１２９】
図５は正規表現を作成する処理である。
【０１３０】
ステップＳ２０１において、プロジェクト番号をキーにして、共通部テーブル１９００の情報を取得する処理を行う。例えば、プロジェクト番号が「ＰＲＪ０００００００００１」である場合、１９１０のレコードの情報を取得する。
【０１３１】
ステップＳ２０２において、プロジェクト番号をキーにして、サンプリング情報テーブル１８００の情報を取得する処理を行う。例えば、プロジェクト番号が「ＰＲＪ０００００００００１」である場合、１８１１と１８１２のレコードの情報を取得する。
【０１３２】
ステップＳ２０３において、ステップＳ２０１で取得した情報より、共通部の指定が有るか否かを、共通部テーブル１９００の１９０２に値が存在するか否かで判定する。
【０１３３】
例えば、取得した１９１０のレコードにおいては、共通部１９０２の値が「ＲＥＱ＿」であるため、共通部の指定が有ると判定する。共通部１９０２の値が無い場合は、共通部の指定が無いと判定する。
【０１３４】
ステップＳ２０３において、共通部の指定が有ると判定した場合（ステップＳ２０３でＹＥＳの場合）、ステップＳ２０４へ処理を進める。ステップＳ２０３において、共通部の指定が無いと判定した場合（ステップＳ２０３でＮＯの場合）、ステップＳ２１１へ処理を進める。
【０１３５】
ステップＳ２０４において、中央部正規表現作成１の処理を行う。すなわち、識別子を含むファイルから、所定の識別子を抽出する第１の正規表現を作成する処理を行う。例えば、ステップＳ２０１取得した値が、共通部１９０２が「ＲＥＱ＿」、変動部１２０４が「１（固定）」であるため、これらの情報を基に正規表現を作成すると、共通部がＲＥＱ＿、変動部が３文字であるため．｛３｝となるため、ＲＥＱ＿．｛３｝となる。なお、文字数の指定をユーザより図１２の画面で行っても良いこととするが、今回は、本処理の処理主体が自動で文字数の認識を行うものとする。
【０１３６】
なお、変動部１２０４で変動１２０６が選択状態である場合、「ＲＥＱ＿．＋」となる。
【０１３７】
ステップＳ２１１において、中央部正規表現作成２の処理を行う。例えば、ステップＳ２０１で取得した値が、共通部１９０２において値がなく、変動部１２０４の固定１２０５が選択状態で有る場合は、１２０１の抽出対象が、７文字で有る場合は、．｛７｝になり、変動部１２０４の変動１２０６が選択状態で有る場合は、．＋になる。
【０１３８】
ステップＳ２０５において、前方部正規表現作成処理を行う。この処理の詳細については、図７の処理フローにおいて行うこととする。すなわち、周辺文字列情報のうち、第１の正規表現を作成する識別子の前方文字列情報より第２の正規表現を作成する処理を行う。
【０１３９】
図７のステップＳ４０１において、抽出対象（ステップＳ１０７でサンプリングした識別子）の前方２０文字が全て２０文字未満か否かを判定する。
例えば、ステップＳ２０２で取得した１８１１と１８１２のレコードの情報の前方２０文字１８０８を比較することによって判定する。
【０１４０】
なお、本処理で条件となる文字数は、テキスト情報より読み取れる２２０１の情報（書式の情報を含む入力文字列以外の情報）の文字数と、（その右側に表示がされている）アプリケーション上で入力された文字数を判定できる文字数であれば良いこととする。なお、本実施例では、一例として２０文字とする。
【０１４１】
ステップＳ４０１において、抽出対象の前方２０文字が全て２０文字未満であると判定した場合（ステップＳ４０１においてＹＥＳの場合）、ステップＳ４０２へ処理を進める。
【０１４２】
ステップＳ４０１において、抽出対象の前方２０文字が全て２０文字未満でないと判定した場合（ステップＳ４０１においてＮＯの場合）、ステップＳ４０４へ処理を進める。
【０１４３】
ステップＳ４０２において、抽出対象の前方２０文字が全て一致するか否かを判定する。ステップＳ４０２において、抽出対象の前方２０文字が全て一致すると判定した場合（ステップＳ４０２でＹＥＳの場合）、ステップＳ４０３において、前方部正規表現作成１の処理を行う。ステップＳ４０２において、抽出対象の前方２０文字が全て一致しないと判定した場合（ステップＳ４０２でＮＯの場合）、ステップＳ４０４において、前方部正規表現作成２の処理を行う。
【０１４４】
ステップＳ４０３において、前方部正規表現作成１の処理を行う。
【０１４５】
ステップＳ４０４において、前方部正規表現作成２の処理を行う。            
【０１４６】
なお、図７の処理について、図２２の２２０６の前方２０文字である（２２０２）の値は「ＴＡＧ＿ＩＤ１＋タブ文字１文字分」と、図２２の２２０７の前方２０文字である（２２０４）の値は「ＴＡＧ＿ＩＤ２＋タブ文字１文字分」を、例に挙げて説明する。
【０１４７】
これらのデータは、サンプリング情報テーブルに１８１１、１８１２のレコードとして登録されていて、これらの前方２０文字１８０８は、ステップＳ４０１において、抽出対象の前方２０文字が全て２０文字未満であるため（１８１１の前方２０文字１８０８は８文字、１８１２の前方２０文字１８０８は８文字）、ステップＳ４０１においてＹＥＳになるが、ステップＳ４０２において、抽出対象の前方２０文字が全て一致しないと判定されるため、ステップＳ４０４の前方部正規表現作成２の処理を行うこととなる。
【０１４８】
ステップＳ４０４においては、ステップＳ２０２で取得した１８１１と１８１２のレコードの前方２０文字１８０８の文字列を用いて、ステップＳ１０７で指定したサンプルの識別子から見て近い文字から、正規表現を作成する試行回数から１マイナスした数の文字数分の文字列より、前方部の正規表現を作成する。
【０１４９】
なお、１回目の前方の正規表現を作成する試行においては、試行回数１回目から１を引いた数の０文字数分で作成するので、前方部の正規表現は作成しないこととなる。２回目の試行の際は、１８１１と１８１２のレコードの前方２０文字１８０８の文字列を用いて、ステップＳ１０７で指定したサンプルの識別子から見て近い文字から１文字分の文字列より、前方部の正規表現を作成することとなる。
【０１５０】
なお、この試行回数とは、正規表現を試行しながら作成する回数として図１５のシステムコントロールテーブル１５００で予め管理がされているものとする。
【０１５１】
本処理は、一度終了し、再度、図５の処理へ戻る。ステップＳ２０６において、後方部正規表現作成処理を行う。すなわち、周辺文字列情報のうち、第１の正規表現を作成する識別子の後方文字列情報より第２の正規表現を作成する処理を行う。この処理の詳細については、図８の処理フローにおいて行うこととする。
【０１５２】
ステップＳ５０１において、抽出対象（ステップＳ１０７でサンプリングした識別子）の後方２０文字が全て２０文字未満か否かを判定する。
【０１５３】
例えば、ステップＳ２０２で取得した１８１１と１８１２のレコードの情報の後方２０文字１８０９を比較することによって判定する。
【０１５４】
ステップＳ５０１において、抽出対象の後方２０文字が全て２０文字未満であると判定した場合（ステップＳ５０１においてＹＥＳの場合）、ステップＳ５０２へ処理を進める。
【０１５５】
ステップＳ５０１において、抽出対象の後方２０文字が全て２０文字未満でないと判定した場合（ステップＳ５０１においてＮＯの場合）、ステップＳ５０４へ処理を進める。
【０１５６】
ステップＳ５０２において、抽出対象の後方２０文字が全て一致するか否かを判定する。
【０１５７】
ステップＳ５０２において、抽出対象の後方２０文字が全て一致すると判定した場合（ステップＳ５０２でＹＥＳの場合）、ステップＳ５０３において、後方部正規表現作成１の処理を行う。ステップＳ５０２において、抽出対象の後方２０文字が全て一致しないと判定した場合（ステップＳ５０２でＮＯの場合）、ステップＳ５０４において、後方部正規表現作成２の処理を行う。
【０１５８】
ステップＳ５０３において、後方部正規表現作成１の処理を行う。
【０１５９】
ステップＳ５０４において、後方部正規表現作成２の処理を行う。
【０１６０】
なお、図８の処理について、図２２の２２０６の後方２０文字である（２２０３）の値は「改行文字１文字」と、図２２の２２０７の前方２０文字である（２２０５）の値は「半角スペース１文字＋１２ページ参照＋改行文字１文字」を、例に挙げて説明する。
【０１６１】
これらデータは、サンプリング情報テーブルに１８１１、１８１２のレコードとして登録されていて、これらの後方２０文字１８０９は、ステップＳ５０１において、抽出対象の後方２０文字が全て２０文字未満であるため（１８１１の後方２０文字１８０９は１文字、１８１２の後方２０文字１８０９は９文字）、ＹＥＳになるが、ステップＳ５０２において、抽出対象の後方２０文字が全て一致しないと判定されるため、ステップＳ５０４の後方部正規表現作成２の処理を行うこととなる。
【０１６２】
ステップＳ５０４においては、ステップＳ２０２で取得した１８１１と１８１２のレコードの後方２０文字１８０９の文字列を用いて、ステップＳ１０７で指定したサンプルの識別子から見て近い文字から、正規表現を作成する試行回数から１マイナスした数の文字数分の文字列より、後方部の正規表現を作成する。
【０１６３】
なお、１回目の後方の正規表現を作成する試行においては、試行回数１回目から１を引いた数の０文字数分で作成するので、後方部の正規表現は作成しないこととなる。２回目の試行の際は、１８１１と１８１２のレコードの後方２０文字１８０９の文字列を用いて、ステップＳ１０７で指定したサンプルの識別子から見て近い文字から１文字分の文字列より、後方部の正規表現を作成することとなる。
【０１６４】
なお、この試行回数とは、正規表現を試行しながら作成する回数としてシステムコントロールテーブル１５００で予め管理がされているものとする。
【０１６５】
再び、図５の説明に戻る。ステップＳ２０７において、ステップＳ２０４、または、ステップＳ２１１で作成した中央部正規表現、ステップＳ２０５で作成した前方部正規表現、ステップＳ２０６で作成した後方部正規表現を、連結する処理を行う。すなわち、第１の正規表現と第２の正規表現を結合した第３の正規表現を作成する処理を行う。
【０１６６】
例えば、サンプリング情報テーブル１８００の１８１１と１８１２のレコードによると、１回目の試行においては、中央部正規表現は作成するが、前方部正規表現、後方部正規表現が作成しないため、（ＲＥＱ＿．｛３｝）が作成される。
【０１６７】
ステップＳ２０８において、プロジェクト番号をキーにして、正規表現生成結果テーブル２０００の情報を１件ずつ取得する。
【０１６８】
正規表現生成結果テーブル２０００は、プロジェクト番号２００１、試行回数２００２、正規表現２００３、結果フラグ２００４からなる。
【０１６９】
プロジェクト番号２００１には、今回作成する正規表現に関連する番号として採番されたプロジェクト番号の値が登録される。
【０１７０】
試行回数２００２には、正規表現を作成した回数が登録される。
【０１７１】
正規表現２００３には、ステップＳ２０７で作成した正規表現が登録される。
【０１７２】
結果フラグ２００４には、作成した正規表現に問題がある場合は「１」を、作成した正規表現に問題がない場合は「０」が登録される。
【０１７３】
ステップＳ２０９において、正規表現生成結果テーブル２０００の取得が終了したかを判定する。ステップＳ２０９で正規表現生成結果テーブル２０００の取得が終了したと判定した場合（ステップＳ２０９でＹＥＳの場合）、ステップＳ２１０へ処理を進める。ステップＳ２０９で正規表現生成結果テーブル２０００の取得が終了していないと判定した場合（ステップＳ２０９でＮＯの場合）、ステップＳ２１２へ処理を進める。
【０１７４】
ステップＳ２１２において、ステップＳ２０８で取得した正規表現生成結果テーブル２０００より取得したレコードの正規表現２００３の値と、直前のステップＳ２０７で作成した正規表現が、同じであるか否かを判定する。
【０１７５】
ステップＳ２１２において、ステップＳ２０８で取得した正規表現生成結果テーブル２０００より取得したレコードの正規表現２００３の値と、直前のステップＳ２０７で作成した正規表現が、同じであると判定した場合（ステップＳ２１２でＹＥＳの場合）は、図５の処理を終了し、同じでないと判定した場合（ステップＳ２１２でＮＯの場合）は、ステップＳ２０８へ処理を進める。
【０１７６】
例えば、試行回数１回目の場合、ステップＳ２０８において、直前の処理で作成した正規表現に紐づくプロジェクト番号（ＰＲＪ０００００００００１）に紐づくレコードは取得できないため、ステップＳ２０９においては、正規表現生成結果テーブル２０００の取得が終了と判定され（ＹＥＳとなり）、ステップＳ２１０へ処理を進めることとなる。
【０１７７】
ステップＳ２１０において、正規表現生成結果テーブル２０００に、ステップＳ２０７で作成した正規表現を登録する（図２０、２０１０）。
【０１７８】
例えば、正規表現生成結果テーブル２０００の、プロジェクト番号２００１には、直前の処理で作成した正規表現に紐づくプロジェクト番号「ＰＲＪ０００００００００１」の値を登録する。
【０１７９】
試行回数２００２には、現在は、１回目であるため、「１」を登録する。
【０１８０】
正規表現２００３には、ステップＳ２０７で作成した正規表現である、（ＲＥＱ＿．｛３｝）を登録する。
【０１８１】
結果フラグ２００４には、この時点では値を登録しないこととする。
【０１８２】
すなわち、正規表現の作成の試行回数１回目として、２０１０のレコードを登録する。
【０１８３】
図５の処理を終了し、次に、図４のステップＳ１１３の処理を行う。
【０１８４】
ステップＳ１１３において、ステップＳ１１２の正規表現の作成処理が完了したか、否かを判定する。ステップＳ１１３において、正規表現の作成が完了したと判定した場合（ステップＳ１１３でＹＥＳの場合）、ステップＳ１１４へ処理を進める。ステップＳ１１３において、正規表現の作成が完了しなかったと判定した場合（ステップＳ１１３でＮＯの場合）、ステップＳ１１８へ処理を進める。
【０１８５】
ステップＳ１１４において、ステップＳ２０７で作成された正規表現のチェック処理を行う。なお、この処理については、図６の処理フローを基に説明を行う。
【０１８６】
図６のステップＳ３０１において、作成された正規表現でサンプリング範囲を検索する。例えば、現在、正規表現生成結果テーブル２０００の２０１０の結果が生成されているため、２０１０のレコードの正規表現２００３の値、（ＲＥＱ＿．｛３｝）により、ステップＳ１０４で受け付けた、予めサンプリングされた範囲である図１０、１００１内を１箇所ずつ探索する。
【０１８７】
ステップＳ３０２において、探索した結果を、抽出結果テーブル２１００に登録する。
【０１８８】
なお、抽出結果テーブル２１００は、プロジェクト番号２１０１、試行回数２１０２、ＳＥＱ２１０３、抽出内容２１０４、開始位置（ページ）２１０５、終了位置（ページ）２１０６、開始位置（行数）２１０７、終了位置（行数）２１０８、開始位置（左からの文字位置）２１０９、からなる。
【０１８９】
プロジェクト番号２１０１には、今回作成する正規表現に関連する番号として採番されたプロジェクト番号の値を登録する。
【０１９０】
試行回数２１０２には、正規表現を作成した回数を登録する。
【０１９１】
ＳＥＱ２１０３には、同一プロジェクト番号内の試行回数毎に紐き、ステップＳ３０１で検索した順序の値を登録する。
【０１９２】
抽出内容２１０４には、ステップＳ２０７で作成した正規表現によりステップＳ３０１で検索した結果を登録する。
【０１９３】
開始位置（ページ）２１０５には、抽出内容２１０４の値が存在する最初のページの、ページ数値が登録される。
【０１９４】
終了位置（ページ）２１０６には、抽出内容２１０４の値が存在する最後のページの、ページ数の値が登録される。
【０１９５】
開始位置（行数）２１０７には、抽出内容２１０４の値が存在を開始した行、の行数の値が登録される。
【０１９６】
終了位置（行数）２１０８には、抽出内容２１０４の値が存在を終了した行、の行数の値が登録される。
【０１９７】
開始位置（左からの文字位置）２１０９には、抽出内容２１０４の値が、存在を開始した行の中における、存在する位置を左からの文字数の位置で登録する。
【０１９８】
ステップＳ３０３において、ステップＳ３０１の探索が全て完了した場合、ステップＳ３０４に処理を進める。ステップＳ３０１の探索が全て完了していない場合、再度ステップＳ３０１に処理を進める。
【０１９９】
例えば、２０１０のレコードの正規表現２００３の値、（ＲＥＱ＿．｛３｝）により、ステップＳ１０４で受け付けた、予めサンプリングされた範囲である図１０、１００１を１箇所ずつ探索した場合（ステップＳ３０３がＹＥＳになるまでステップＳ３０１において検索した場合）、図１０、１００２のＲＥＱ＿００１、図１０、１００３のＲＥＱ＿００９、図１０、１００４のＲＥＱ＿００２が抽出される。
【０２００】
また、その抽出した結果は、抽出結果テーブル２１００において、図１０、１００２のＲＥＱ＿００１は、図２１、２１１０、図１０、１００３のＲＥＱ＿００９は、図２１、２１１１、図１０、１００４のＲＥＱ＿００２は、図２１、２１１２に図示するように登録されることとなる（ステップＳ３０２）。
【０２０１】
ステップＳ３０４において、サンプリング情報テーブル１８００の情報が抽出結果テーブル２１００に存在するか確認処理を行う。すなわち、サンプリングした識別子が、作成した正規表現で検索をした場合に、検索できたかを確認する。
【０２０２】
具体的には、サンプリング情報テーブル１８００に登録されている同一プロジェクト番号内のレコードが、抽出結果テーブル２１００における同一プロジェクト番号で、試行回数２１０２が現在の試行回数の値を保持するレコードに存在するか否かで確認をする。
【０２０３】
なお、レコードに存在するとは、サンプリング情報テーブル１８００のプロジェクト番号１８０１、サンプリング内容１８０３、開始位置（ページ）１８０４、終了位置（ページ）１８０５、開始位置（行数）１８０６、終了位置（行数）１８０７の値、開始位置（左からの文字位置）１８１０を、抽出結果テーブル２１００における、同一名称の項目である、抽出内容２１０４、開始位置（ページ）２１０５、終了位置（ページ）２１０６、開始位置（行数）２１０７、終了位置（行数）２１０８、開始位置（左からの文字位置）２１０９の値と、比較し、同じ値が存在していれば、ステップＳ３０４において、サンプリング情報テーブル１８００の情報が抽出結果テーブル２１００に存在すると判定する。
【０２０４】
ステップＳ３０５において、ステップＳ３０４の結果全て存在すると判定した場合（ステップＳ３０５でＹＥＳの場合）、ステップＳ３０６に処理を進め、ステップＳ３０４の結果全てが存在しているわけではない（１つでも存在しないものがある）と判定した場合（ステップＳ３０５でＮＯの場合）、図６の処理を終了する。
【０２０５】
例えば、現在、サンプリング情報テーブル１８００には、１８１１、１８１２のレコードが存在し、抽出結果テーブル２１００には、２１１０、２１１１、２１１２のレコードが存在する。
【０２０６】
サンプリング情報テーブル１８００の１８１１のレコードは、抽出結果テーブル２１００の２１１０のレコードに存在が確認され、また、サンプリング情報テーブル１８００の１８１２のレコードは、抽出結果テーブル２１００の２１１２のレコードに存在が確認される。この場合、ステップＳ３０５において、全て存在すると判定するため、ステップＳ３０６へ処理を進める。
【０２０７】
ステップＳ３０６において、抽出結果テーブル２１００に、サンプリング情報テーブル１８００の情報、以外の情報が存在するか、確認する。
【０２０８】
具体的には、抽出結果テーブル２１００に登録されているレコードにおいて、プロジェクト番号２１０１が、現在処理を行っているプロジェクト番号で、試行回数２１０２が現在の試行回数の値を保持するレコードと、サンプリング情報テーブル１８００に登録されているレコードおいて、プロジェクト番号２１０１が、現在処理を行っているプロジェクト番号を保持するレコードを比較することで確認する。
【０２０９】
存在するか否かの確認は次の方法で行うこととする。
【０２１０】
抽出結果テーブル２１００の抽出内容２１０４、開始位置（ページ）２１０５、終了位置（ページ）２１０６、開始位置（行数）２１０７、終了位置（行数）２１０８、開始位置（左からの文字位置）２１０９の値と、サンプリング情報テーブル１８００における、同一名称の項目である、サンプリング内容１８０３、開始位置（ページ）１８０４、終了位置（ページ）１８０５、開始位置（行数）１８０６、終了位置（行数）１８０７、開始位置（左からの文字位置）１８１０の値と、を同一名称同士で比較し、比較した結果、抽出結果テーブル２１００側のレコードの上記項目の値が、サンプリング情報テーブル１８００のレコードの対応する同一名称の項目の値に存在するか、否か、で確認を行う。
【０２１１】
例えば、抽出結果テーブル２１００の２１１０のレコードは、サンプリング情報テーブル１８００の１８１１のレコードに存在が確認され、また、抽出結果テーブル２１００の２１１２のレコードは、サンプリング情報テーブル１８００の１８１２のレコードに存在が確認される。しかしながら、抽出結果テーブル２１００の２１１１のレコードは、サンプリング情報テーブル１８００のレコードには存在が確認されない。このように、存在しない場合は、抽出結果は正常ではないと判定する。
【０２１２】
ステップＳ３０７において、正規表現生成結果テーブル２０００に、ステップＳ３０６の結果を更新する。
【０２１３】
例えば、現在のステップＳ３０６の結果、正規表現生成結果テーブル２０００の、プロジェクト番号２００１が「ＰＲＪ０００００００００１」、試行回数２００２が「１」、正規表現２００３が（ＲＥＱ＿．｛３｝）の値を持つレコード２０１０、の結果フラグ２００４を「１」に更新する。
【０２１４】
結果フラグ２００４には、ステップＳ３０６の結果、抽出結果が正常ではないと判定した場合、「１」の値を登録し、抽出結果が正常であると判定した場合、「０」の値を登録することにしているためである。
【０２１５】
以上で、図６の処理を終了し、図４のステップＳ１１５に処理を進める。
【０２１６】
ステップＳ１１５において、ステップＳ１１４の正規表現のチェック処理を行った結果、正常であると判定した場合（すなわち、第３の正規表現により抽出される識別子が、受け付けたサンプル識別子を抽出していると判定した場合、ステップＳ１１５でＹＥＳの場合）、ステップＳ１１６へ処理を進め、正常でないと判定した場合（ステップＳ１１５でＮＯの場合）、ステップＳ１１７へ処理を進める。
【０２１７】
具体的には、現在のプロジェクト番号と試行回数に対応する、正規表現生成結果テーブル２０００のレコードの結果フラグ２００４の値で判定する。なお、現在、プロジェクト番号は「ＰＲＪ０００００００００１」、試行回数は「１」であるため、プロジェクト番号２００１が「ＰＲＪ０００００００００１」、試行回数２００２が「１」のレコード（正規表現生成結果テーブル２０００のレコード２０１０）の結果フラグ２００４の値を確認すると、「１」であるため、正常ではないと判定する。そのためステップＳ１１７へ処理を進める。
【０２１８】
ステップＳ１１７の処理において、正規表現の作成が最大試行回数分完了したか否かを判定する。具体的には、現在の試行回数が、システムコントロールテーブル１５００の最大試行回数１５０１の値になったか、未満か、で判断する。
【０２１９】
システムコントロールテーブル１５００は、最大試行回数１５０１の項目からなり、最大試行回数１５０１は、正規表現を作成するための試行回数の上限の値を管理する。
【０２２０】
ステップＳ１１７において、最大試行回数分完了していないと判定した場合（ステップＳ１１７でＮＯの場合）ステップＳ１１２へ処理を進め、最大試行回数分完了したと判定した場合（ステップＳ１１７でＹＥＳの場合）ステップＳ１１８へ処理を進める。
【０２２１】
例えば、現在の試行回数は「１」であり、システムコントロールテーブル１５００に登録されている、レコード１５１０の最大試行回数１５０１の値は「１０」と比較すると、最大試行回数未満であるため、ステップＳ１１７の処理においては、最大試行回数分完了していないと判定し、ステップＳ１１２へ処理を進める。
ステップＳ１１２の処理は図５の処理図で説明を行う。
【０２２２】
ステップＳ２０１からステップＳ２０４、ステップＳ２１１の処理は、試行回数、１回目の時と同様の処理を行うこととするため、処理の詳細の説明については省略することとする。
ステップＳ２０５において、試行回数２回目の正規表現作成の処理を行う。ステップＳ２０５の処理は図７の処理図で説明を行う。
【０２２３】
図７のステップＳ４０１とステップＳ４０２の判定については、試行回数、１回目の時と同様であることとする。すなわち、ステップＳ４０１において、抽出対象の前方２０文字が全て２０文字未満であるため（１８１１の前方２０文字１８０８は８文字、１８１２の前方２０文字１８０８は８文字）、ＹＥＳになるが、ステップＳ４０２において、抽出対象の前方２０文字が全て一致しないと判定されるため、ステップＳ４０４の前方部正規表現作成２の処理を行うこととなる。
【０２２４】
ステップＳ４０４において、ステップＳ２０２で取得した１８１１と１８１２のレコードの前方２０文字１８０８の文字列を用いて、ステップＳ１０７で指定したサンプルの識別子から見て近い文字列から試行回数から１マイナスした数の文字数分の文字列より、前方部の正規表現を作成する。すなわち、周辺文字列が相互に異なる場合、第１の正規表現を作成する識別子から見て近い、周辺文字列から正規表現を試行している回数から１を引いた文字数の文字列より、第２の正規表現を作成する処理を行う。
【０２２５】
具体的には、サンプリング情報テーブル１８００の、レコード１８１１の前方２０文字１８０８の文字列の値と、レコード１８１２の前方２０文字１８０８の文字列の値のうち、サンプリング内容１８０３（ステップＳ１０７で指定したサンプルの識別子）から見て近い文字列から１文字分の文字列（２回目−１で１文字目）より、前方部の正規表現を作成する。
【０２２６】
すなわち、現在の試行回数は２回目であるため、図２２の２２０２の文字列（ステップＳ１０７で指定したサンプルの識別子に該当するテキスト情報である、ＲＥＱ＿００１の前方文字列）のうち、ＲＥＱ＿００１から数えて１文字目（２回目−１で１文字目）と、図２２の２２０４の文字列（ステップＳ１０７で指定したサンプルの識別子に該当するテキスト情報である、ＲＥＱ＿００２の前方文字列）のうち、ＲＥＱ＿００２から数えて１文字目（２回目−１で１文字目）を、比較することで前方の正規表現を作成する。本実施例においては、レコード１８１１の１文字の値はタブ文字、レコード１８１２の文字の値はタブ文字となっているため、これらの値を用いると、前方の正規表現として、￥ｔを作成する。
【０２２７】
図７の処理が終了したため、図５のステップＳ２０７の処理を行う。図５の処理については、図８の処理図で説明を行う。
【０２２８】
図８のステップＳ５０１とステップＳ５０２の判定については、試行回数、１回目の時と同様であることとする。すなわち、ステップＳ５０１において、抽出対象の後方２０文字が全て２０文字未満であるため（１８１１の後方２０文字１８０９は１文字、１８１２の後方２０文字１８０９は９文字）、ＹＥＳになるが、ステップＳ５０２において、抽出対象の後方２０文字が全て一致しないと判定されるため、ステップＳ５０４の後方部正規表現作成２の処理を行うこととなる。
【０２２９】
ステップＳ５０４において、ステップＳ２０２で取得した１８１１と１８１２のレコードの後方２０文字１８０９の文字列を用いて、ステップＳ１０７で指定したサンプルの識別子から見て近い文字列から試行回数から１マイナスした数の文字数分の文字列より、後方部の正規表現を作成する。すなわち、周辺文字列が相互に異なる場合、第１の正規表現を作成する識別子から見て近い、周辺文字列から正規表現を試行している回数から１を引いた文字数の文字列より、第２の正規表現を作成する処理を行う。
【０２３０】
具体的には、サンプリング情報テーブル１８００の、レコード１８１１の後方２０文字１８０９の文字列の値と、レコード１８１２の後方２０文字１８０９の文字列の値のうち、サンプリング内容１８０３（ステップＳ１０７で指定したサンプルの識別子）から見て近い文字列から１文字分の文字列（２回目−１で１文字目）より、後方部の正規表現を作成する。
【０２３１】
すなわち、現在の試行回数は２回目であるため、図２２の２２０３の文字列（ステップＳ１０７で指定したサンプルの識別子に該当するテキスト情報である、ＲＥＱ＿００１の後方文字列）のうち、ＲＥＱ＿００１から数えて１文字目（２回目−１で１文字目）と、図２２の２２０５の文字列（ステップＳ１０７で指定したサンプルの識別子に該当するテキスト情報である、ＲＥＱ＿００２の後方文字列）のうち、ＲＥＱ＿００２から数えて１文字目（２回目−１で１文字目）を、比較することで後方の正規表現を作成する。なお、本実施例においては、レコード１８１１の１文字の値は改行文字、レコード１８１２の文字の値はスペース文字となっているため、これらの値を用いた場合、後方の正規表現は作成不可能であるため、何も作成されないこととする。
【０２３２】
図８の処理が終了したため、図５のステップＳ２０７の処理を行う。ステップＳ２０７において、ステップＳ２０４、または、ステップＳ２１１で作成した中央部正規表現、ステップＳ２０５で作成した前方部正規表現、ステップＳ２０６で作成した後方部正規表現を、連結する処理を行う。
【０２３３】
例えば、サンプリング情報テーブル１８００の１８１１と１８１２のレコードによると、２回目の試行においては、中央部正規表現がＲＥＱ＿．｛３｝、前方部正規表現が￥ｔ、後方部正規表現が作成されないため、￥ｔ（ＲＥＱ＿．｛３｝）が作成される。
【０２３４】
ステップＳ２０８において、プロジェクト番号をキーにして、正規表現生成結果テーブル２０００の情報を１件ずつ取得する。
【０２３５】
例えば、作成している正規表現に紐づくプロジェクト番号（ＰＲＪ０００００００００１）に紐づくレコードとして、正規表現生成結果テーブル２０００の２０１０のレコードを１件取得する。
【０２３６】
ステップＳ２０９において、正規表現生成結果テーブル２０００のレコードの取得が全レコード終了したかを判定する。現在、ステップＳ２０８でレコードが取得でき、ステップＳ２０９で正規表現生成結果テーブル２０００の取得が全て終了したとは判定できないため（ステップＳ２０９でＮＯ）、ステップＳ２１２へ処理を進める。
【０２３７】
ステップＳ２１２において、ステップＳ２０８で取得した正規表現生成結果テーブル２０００より取得したレコードの正規表現２００３の値と、直前のステップＳ２０７で作成した正規表現が、同じであるか否かを判定する。
【０２３８】
ステップＳ２１２において、現在の試行回数２回目においては、ステップＳ２０８で取得した正規表現生成結果テーブル２０００より取得したレコードの正規表現２００３の値は（ＲＥＱ＿．｛３｝）で、直前のステップＳ２０７で作成した正規表現は￥ｔ（ＲＥＱ＿．｛３｝）であるため、同じでない（ステップＳ２１２でＮＯ）と判定し、ステップＳ２０８へ処理を進める。
【０２３９】
ステップＳ２０８で再度、作成している正規表現に紐づくプロジェクト番号（ＰＲＪ０００００００００１）に紐づくレコードとして、正規表現生成結果テーブル２０００の１件目に読み取ったレコード（２０１０のレコード）以外のレコードを取得する。
【０２４０】
ステップＳ２０９において、正規表現生成結果テーブル２０００の取得が終了したかを判定する。現在、ステップＳ２０８では、１件目に読み取ったレコード以外のレコード取得できなかったため、ステップＳ２０９で正規表現生成結果テーブル２０００の読み取りが終了と判定し（ステップＳ２０９でＹＥＳ）、ステップＳ２１０へ処理を進める。
【０２４１】
ステップＳ２１０において、試行回数２回目のステップＳ２０７において作成した正規表現を、プロジェクト番号２００１は「ＰＲＪ０００００００００１」、試行回数は「２」、正規表現２００３は￥ｔ（ＲＥＱ＿．｛３｝）の値で、正規表現生成結果テーブル２０００に登録する（図２０、２０１１）。
【０２４２】
図５の処理が終了したため、図４のステップＳ１１３へ処理を進める。
【０２４３】
図５のステップＳ１１３においては、試行回数２回目の、ステップＳ１１２の正規表現の作成処理が完了したと判定し、ステップＳ１１４へ処理を進める。
【０２４４】
なお、ステップＳ１１４は、図６の処理図で説明を行う。なお、処理自体は、試行回数１回目と同じであるため、処理そのものの説明については省略をする。
【０２４５】
図６のステップＳ３０１において、生成された正規表現でサンプリング範囲を検索する。
【０２４６】
例えば、現在、正規表現生成結果テーブル２０００の２０１１の結果が生成されているため、２０１１のレコードの正規表現２００３の値、￥ｔ（ＲＥＱ＿．｛３｝）により、ステップＳ１０４で受け付けた、予めサンプリングされた範囲である図１０、１００１を１箇所ずつ検索する。
【０２４７】
全て検索した結果、抽出結果テーブル２１００へは、レコード２１１３、レコード２１１４が（ステップＳ３０２により）登録されることとなる。
【０２４８】
続いて、ステップＳ３０４において、サンプリング情報テーブル１８００の情報が抽出結果テーブル２１００に存在するか確認処理を行う。試行回数２回目においては、ステップＳ３０４の結果全て存在すると判定するため（ステップＳ３０５でＹＥＳ）、ステップＳ３０６へ処理を進める。
【０２４９】
ステップＳ３０６において、抽出結果テーブル２１００に、サンプリング情報テーブル１８００の情報、以外の情報が存在するか、確認する。
【０２５０】
例えば、現在作成している正規表現に紐づくプロジェクト番号は「ＰＲＪ０００００００００１」で、試行回数が２回目であるため、抽出結果テーブル２１００のプロジェクト番号２１０１が「ＰＲＪ０００００００００１」、試行回数２１０２が「２」であるレコードと、サンプリング情報テーブル１８００の、１８１１のレコードと１８１２のレコードを試行回数１回目の時と同様に比較を行うと、抽出結果テーブル２１００のレコード２１１３は、サンプリング情報テーブル１８００の１８１１に対応し、抽出結果テーブル２１００のレコード２１１４は、サンプリング情報テーブル１８００の１８１２に対応することとなる。
【０２５１】
すなわち、比較対象となる抽出結果テーブル２１００のレコードと、サンプリング情報テーブル１８００のレコードにおいて、比較項目を比較した場合に、抽出結果テーブル２１００のレコードにおいて、サンプリング情報テーブル１８００のレコードに対応しないレコードは存在しない（抽出結果テーブル２１００に、サンプリング情報テーブル１８００の情報以外の情報は存在しない）と判定される。
【０２５２】
ステップＳ３０７において、正規表現生成結果テーブル２０００に、ステップＳ３０６の結果を更新する。
【０２５３】
例えば、試行回数２回目のステップＳ３０６の結果、正規表現生成結果テーブル２０００の、プロジェクト番号２００１が「ＰＲＪ０００００００００１」、試行回数２００２が「２」、正規表現２００３が￥ｔ（ＲＥＱ＿．｛３｝）の値を持つレコード２０１１、の結果フラグ２００４を「０」に更新する。結果フラグ２００４には、ステップＳ３０６の結果、抽出結果が正常ではないと判定した場合、「１」の値を登録し、抽出結果が正常であると判定した場合、「０」の値を登録することにしているためである。
【０２５４】
図６の処理を終了し、図４のステップＳ１１５へ処理を進める。
【０２５５】
ステップＳ１１５において、ステップＳ１１４の正規表現のチェック処理を行った結果、正常であると判定した場合（すなわち、第３の正規表現により抽出される識別子が、受け付けたサンプル識別子を抽出していると判定した場合、ステップＳ１１５でＹＥＳの場合）、）、ステップＳ１１６へ処理を進め、正常でないと判定した場合（ステップＳ１１５でＮＯの場合）、ステップＳ１１７へ処理を進める。なお、正常であると判定したということは、適切な正規表現が作成されたということである。
【０２５６】
なお、現在、プロジェクト番号は「ＰＲＪ０００００００００１」、試行回数は「２」であるため、プロジェクト番号２００１が「ＰＲＪ０００００００００１」、試行回数２００２が「２」のレコード（正規表現生成結果テーブル２０００のレコード２０１１）の結果フラグ２００４の値を確認すると、「０」であるため、正常であると判定する。そのためステップＳ１１６へ処理を進める。
【０２５７】
ステップＳ１１６において、図１３の正規表現表示画面１３００の生成された正規表現の領域１３０１（生成された正規表現１３０１）に図示するように、作成した正規表現を表示する。すなわち、作成した第３の正規表現を、文書を相互に参照可能に関連付けする箇所である識別子を抽出可能な正規表現、として提供する。
【０２５８】
なお、反映１３０２のボタンの押下を受け付けると、成果物解析用定義１３１０の画面の中の要件識別子抽出用正規表現を入力する領域である、要件識別子抽出用正規表現１３１１に、生成された正規表現１３０１の値を反映する。
【０２５９】
ステップＳ１１５において、正規表現のチェック処理を行った結果が正常ではないと判定し、かつ、ステップＳ１１７において、正規表現の作成が最大試行回数分完了した、と判定した場合（ステップＳ１１５においてＮＯで、ステップＳ１１７においてＹＥＳの場合）、ステップＳ１１８において、図１４の生成結果確認画面１４００を表示する。
【０２６０】
生成結果確認画面１４００は、サンプリングした識別子のみを抽出する正規表現を生成できなかった場合に表示する画面である。正規表現をプルダウンで表示する領域１４０１には、これまで同じプロジェクト番号における、試行回数毎に作成された正規表現（正規表現生成結果テーブル２０００の正規表現２００３の値）を表示する。
【０２６１】
なお、この値をプルダウンで正規表現の値を変更すると、ステップＳ１０４で受け付けたサンプリングした範囲内において、どの箇所がその正規表現によって選択されるのかを、１４０２の領域で確認することが可能となる。例えば、１４０２において、黒く反転している箇所がその箇所である。
【０２６２】
これは、サンプリングする識別化子を正確に文書内に入力することや、サンプリングする識別子を正確に選択することを行うことに役立つこととなる。そして、文書自体の構造、または構成の見直しが行われることにも役立つこととなる。
【０２６３】
なお、図４の説明においては、作成した正規表現は、参照先（参照される側）の識別子を確定するための正規表現を入力する領域である、図１３の要件識別子抽出用正規表現１３１１へ入力されるようになっている。なお、この要件識別子抽出用正規表現１３１１は、
要件識別子抽出用正規表現９１１のことである。
【０２６４】
同じく、図４の処理を用いて、参照元（参照する側）の識別子を確定するための正規表現を作成することが可能である。この場合、呼出１３１２のボタンを押下することにより、正規表現作成処理が始まり、最終的に、参照識別子抽出用正規表現１３１３（参照識別子抽出用正規表現９１２と同様の項目）の領域に作成したものが入力されるようになる。
以上図４の処理の説明を終了する。
【０２６５】
続いて、ステップＳ１０４で受け付けたサンプリングの範囲が図２６の２６０３内容で、ステップＳ１０４で受け付けたサンプリングの識別子が図２６の２６０１と２６０２である場合の正規表現の作成処理について説明を行う。なお、図２６の「□」の文字で表現されている箇所は、任意の文字が入力されているものとする。また、先の処理と異なる部分を中心に説明をする。
【０２６６】
図２６のサンプリング範囲２６０３について、ステップＳ１０８のテキスト情報作成処理を行った場合、結果として図２７に図示するようになる。図２６の２６０３は、図２７の２７００としてテキスト情報が作成される。
【０２６７】
また、ステップＳ１０９のサンプリング情報テーブルへの登録処理においては、図２８のサンプリング情報テーブル２８００に図示するように登録される。
【０２６８】
サンプリング情報テーブル２８００は、サンプリング情報テーブル１８００と同じテーブルであるとする。また、サンプリング情報テーブル２８００とサンプリング情報テーブル１８００の同一名称の項目は、同じ項目であることとする。
【０２６９】
そのため、サンプリング内容２８０３、前方２０文字２８０８と後方２０文字２８０９の情報以外の項目への値の登録方法については、省略する。
【０２７０】
図２８の２８１１のレコードの前方２０文字２８０８には、テキスト情報より、２７０１の箇所を、ＴＡＧ＿ＩＤ＋タブ文字１文字の値として、登録する。ＴＡＧ＿ＩＤの後ろに空白があるが、一例としてここでは、タブ文字が含まれていることとする。図２８の２８１１のレコードの後方２０文字２８０９には、テキスト情報より、２７０３の箇所を、改行１文字の値として、登録する。図２８の２８１１のレコードのサンプリング内容２８０３には、テキスト情報より、２７０５の箇所を、ＲＥＱ＿００１として登録する。
【０２７１】
また、図２８の２８１２のレコードの前方２０文字２８０８には、テキスト情報より、２７０２の箇所を、ＴＡＧ＿ＩＤ＋タブ文字１文字の値として、登録する。ＴＡＧ＿ＩＤの後ろに空白があるが、一例としてここでは、タブ文字が含まれていることとする。図２８の２８１２のレコードの後方２０文字２８０９には、テキスト情報より、２７０４の箇所を、改行１文字の値として、登録する。図２８の２８１２のレコードのサンプリング内容２８０３には、テキスト情報より、２７０６の箇所を、ＲＥＱ＿００２として登録する。
【０２７２】
これらのサンプリング範囲とサンプリング識別子を利用した場合、サンプリング情報テーブルに２８１１、２８１２のレコードとして登録されていて、これらの前方２０文字２８０８は、ステップＳ４０１において、抽出対象の前方２０文字が全て２０文字未満であるため（２８１１の前方２０文字１８０８は７文字、１８１２の前方２０文字２８０８は７文字）、ステップＳ４０１においてＹＥＳになる。そして、ステップＳ４０２においては、抽出対象の前方２０文字が全て一致していると判定されるため（ステップＳ４０２でＹＥＳと判定）、ステップＳ４０３の前方部正規表現作成１の処理を行うこととなる。
【０２７３】
そして、前方部の正規表現として、ステップＳ４０３において、＾ＴＡＧ＿ＩＤ￥ｔを作成する。
【０２７４】
また、これらの後方２０文字２８０９は、ステップＳ５０１において、抽出対象の後方２０文字が全て２０文字未満であるため（２８１１の後方２０文字２８０９は１文字、２８１２の後方２０文字２８０９は１文字）、ＹＥＳになる。そして、ステップＳ５０２において、抽出対象の後方２０文字が全て一致すると判定されるため（ステップＳ５０２でＹＥＳと判定）、ステップＳ５０３の後方部正規表現作成１の処理を行うこととなる。
【０２７５】
そして、後方部の正規表現として、ステップＳ５０４において、￥ｎ＄を作成する。
【０２７６】
なお、中央部の正規表現は、先に説明したのと同様の方法で、（ＲＥＱ＿．｛３｝）が作成されることとする。
【０２７７】
ステップＳ２０７において、これらを連結すると、＾ＴＡＧ＿ＩＤ￥ｔ（ＲＥＱ＿．｛３｝）￥ｎ＄という正規表現が作成されることになる。
【０２７８】
その後、ステップＳ１１４の処理において、正規表現のチェック処理を行う。ステップＳ３０２の抽出結果テーブルへの登録は、図２９の抽出結果テーブル２９００に図示するように登録がされる。抽出結果テーブル２９００は、抽出結果テーブル２１００と同じテーブルであるとする。また、抽出結果テーブル２９００と抽出結果テーブル２１００の同一名称の項目は、同じ項目であることとする。
【０２７９】
なお、抽出結果テーブル２９００と、サンプリング情報テーブル２８００の比較対象のレコードを用いて、ステップＳ３０４とステップＳ３０６の処理を行った結果、双方のレコードは対応するレコード同士であると判定されるため（図２８の２８１１は、図２９の２９１０、図２８の２８１２は、図２９の２９１１に対応）、ステップＳ３０７にける、正規表現生成結果テーブルへの更新は、図３０の３０１０のようになる。結果は正常に正規表現が作成されたということで、結果フラグ３００４は「０」として更新がされる。
【０２８０】
なお、正規表現生成結果テーブル３０００は、正規表現生成結果テーブル２０００と同じテーブルであるとする。また、正規表現生成結果テーブル３０００と正規表現生成結果テーブル２０００の同一名称の項目は、同じ項目であることとする。
【０２８１】
その結果、ステップＳ１１５において、正常であると判定し（適切な正規表現が作成されたと判定し）、ステップＳ１１６において、ステップＳ２０７で作成した正規表現を図１３の１３０１の領域に表示することとなる。
【０２８２】
以上、ステップＳ１０４で受け付けたサンプリングの範囲が図２６の２６０３内容で、ステップＳ１０４で受け付けたサンプリングの識別子が図２６の２６０１と２６０２である場合の正規表現の作成処理について説明を終了する。
【０２８３】
なお、本発明の処理は、位置を考慮した文字列を探索する正規表現を容易に作成することを可能とする処理であるため、正規表現に詳しくないユーザでも、成果物において関連付けを行いたい箇所のみにマッチングする正規表現を作成できるようになる。
【０２８４】
以上、１実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【０２８５】
また、本発明におけるプログラムは、図４、図５、図６、図７、図８に示すフローチャートの処理方法をコンピュータが実行可能なプログラムであり、本発明の記憶媒体は図４、図５、図６、図７、図８の処理方法をコンピュータが実行可能なプログラムが記憶されている。なお、本発明におけるプログラムは図４、図５、図６、図７、図８の各装置の処理方法ごとのプログラムであってもよい。
【０２８６】
以上のように、前述した実施形態の機能を実現するプログラムを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムを読み出し、実行することによっても本発明の目的が達成されることは言うまでもない。
【０２８７】
この場合、記録媒体から読み出されたプログラム自体が本発明の新規な機能を実現することになり、そのプログラムを記録した記録媒体は本発明を構成することになる。
【０２８８】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＥＥＰＲＯＭ、シリコンディスク等を用いることが出来る。
【０２８９】
また、コンピュータが読み出したプログラムを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２９０】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２９１】
また、本発明は、複数の機器から構成されるシステムに適用しても、ひとつの機器から成る装置に適用しても良い。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【０２９２】
さらに、本発明を達成するためのプログラムをネットワーク上のサーバ、データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。
【符号の説明】
【０２９３】
１０１  処理端末
１０２  ネットワーク
１０３  文書管理サーバ
１０４  データベース
２０１  ＣＰＵ
２０２  ＲＯＭ
２０３  ＲＡＭ
２０４  システムバス
２０５  入力コントローラ
２０６  ビデオコントローラ
２０７  メモリコントローラ
２０８  通信Ｉ／Ｆコントローラ
２０９  入力デバイス
２１０  ディスプレイ
２１１  外部メモリ
【図１】
2018092283.tif 000003
【図２】
2018092283.tif 000004
【図３】
2018092283.tif 000005
【図４】
2018092283.tif 000006
【図５】
2018092283.tif 000007
【図６】
2018092283.tif 000008
【図７】
2018092283.tif 000009
【図８】
2018092283.tif 000010
【図９】
2018092283.tif 000011
【図１０】
2018092283.tif 000012
【図１１】
2018092283.tif 000013
【図１２】
2018092283.tif 000014
【図１３】
2018092283.tif 000015
【図１４】
2018092283.tif 000016
【図１５】
2018092283.tif 000017
【図１６】
2018092283.tif 000018
【図１７】
2018092283.tif 000019
【図１８】
2018092283.tif 000020
【図１９】
2018092283.tif 000021
【図２０】
2018092283.tif 000022
【図２１】
2018092283.tif 000023
【図２２】
2018092283.tif 000024
【図２３】
2018092283.tif 000025
【図２４】
2018092283.tif 000026
【図２５】
2018092283.tif 000027
【図２６】
2018092283.tif 000028
【図２７】
2018092283.tif 000029
【図２８】
2018092283.tif 000030
【図２９】
2018092283.tif 000031
【図３０】
2018092283.tif 000032