(57)【要約】【課題】  検出した文字列の抽出ができる文字列抽出装置を提供する。【解決手段】  文字列抽出装置１００は、入力文字列から一定条件を満たす文字列を順次抽出するとともに、前記入力文字列から抽出した文字数の累積値である抽出済み文字数を更新する文字列検出部１１０と、文字列検出部１１０で抽出された前記文字列と、当該文字列が抽出される直前の前記抽出済み文字数とを対応付けて記憶する抽出文字列記憶部１３０と、文字列検出部１１０で更新された前記抽出済み文字数を記憶するとともに、文字列検出部１１０が新たに前記抽出済み文字数を更新する際に、更新する前の前記抽出済み文字数を文字列検出部１１０へ提供する文字列長記憶部１２０と、を備えたものである。【選択図】  図１
2014235625.tif 000002
【特許請求の範囲】
【請求項１】
入力文字列から一定条件を満たす文字列を順次抽出するとともに、前記入力文字列から抽出した文字数の累積値である抽出済み文字数を更新する文字列検出部と、
この文字列検出部で抽出された前記文字列と、当該文字列が抽出される直前の前記抽出済み文字数とを、対応付けて記憶する抽出文字列記憶部と、
前記文字列検出部で更新された前記抽出済み文字数を記憶するとともに、前記文字列検出部が新たに前記抽出済み文字数を更新する際に、更新する前の前記抽出済み文字数を前記文字列検出部へ提供する文字列長記憶部と、
を備えた文字列抽出装置。
【請求項２】
前記文字列検出部は、前記文字列を一文字分ずつそれぞれ抽出する複数の文字検出部と、前記抽出済み文字数を一文字分ずつそれぞれ更新する複数の文字列長計算部とを有する、
請求項１記載の文字列抽出装置。
【請求項３】
前記文字列は、前記入力文字列が複数に分割された部分文字列である、
請求項１又は２記載の文字列抽出装置。
【請求項４】
前記文字列は、前記入力文字列が複数に分割された部分文字列であり、
この部分文字列の文字数は、前記複数の文字検出部の個数に等しく、かつ前記複数の文字列長計算部の個数に等しい、
請求項２記載の文字列抽出装置。
【請求項５】
前記一定条件は、前記文字列を構成する文字の種類及び前記文字列の文字数を定めたものである、
請求項１乃至４記載の文字列抽出装置。
【請求項６】
入力文字列から一定条件を満たす文字列を順次抽出するとともに、前記入力文字列から抽出した文字数の累積値である抽出済み文字数を更新し、
抽出された前記文字列と、当該文字列が抽出される直前の前記抽出済み文字数とを、対応付けて記憶し、
前記文字列検出部で更新された前記抽出済み文字数を記憶するとともに、前記抽出済み文字数を更新する際に、更新する前の前記抽出済み文字数を提供する、
ことを含む文字列抽出方法。
【請求項７】
入力文字列から一定条件を満たす文字列を順次抽出するとともに、前記入力文字列から抽出した文字数の累積値である抽出済み文字数を更新する文字列検出部と、
前記文字列検出部で抽出された前記文字列と、当該文字列が抽出される直前の前記抽出済み文字数とを、対応付けて記憶する抽出文字列記憶部と、
前記文字列検出部で更新された前記抽出済み文字数を記憶するとともに、前記文字列検出部が新たに前記抽出済み文字数を更新する際に、更新する前の前記抽出済み文字数を前記文字列検出部へ提供する文字列長記憶部と、
をコンピュータに実現するための文字列抽出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、連続的に入力した文字列の中から特定の文字列を抽出する文字列抽出装置等に関する。
【背景技術】
【０００２】
非特許文献１に記載された文字列検出装置を、本発明の関連技術として説明する。この関連技術は、指定された文字の任意長の繰り返しからなる検出対象文字列が入力文字列に含まれているか否かを検出する装置であり、特に複数の文字を同時に入力（多バイト入力）することに対応した文字列検出装置である。
【０００３】
図１１は、関連技術の文字列検出装置の示すブロック図である。以下、この図面に基づき説明する。
【０００４】
関連技術の文字列検出装置３００は、文字検出部３１０−１，３１０−２と、検出状態記憶部３５０と、論理和(OR)ゲート３６０とから構成されている。文字列検出装置３００は、入力文字列を構成する２文字を同時に入力することに対応しており、概略、次のように動作する。
【０００５】
まず、検出状態記憶部３５０の値が真(True)に初期化される。文字検出部３１０では、入力文字列が２文字からなる部分文字列に分割され、部分文字列の各文字が並列して順に入力される。つまり、部分文字列の１文字目が入力端子DATA_I[1]を介して文字検出部３１０−１に入力され、２文字目が入力端子DATA_I[2]を介して文字検出部３１０−２に入力される。
【０００６】
文字検出部３１０−１は、検出状態記憶部３５０の値が真(True)の時に、入力端子DATA_I[1]の値と検出対象文字とを比較し、その比較結果に基づき論理和(OR)ゲート３６０及び文字検出部３１０−２に真(True)の値を送る。
【０００７】
文字検出部３１０−２は、文字検出部３１０−１の判定結果が真(True)の時に、入力端子DATA_I[2]の値と検出対象文字とを比較し、その比較結果に基づき論理和(OR)ゲート３６０及び検出状態記憶部３５０に真(True)の値を送る。
【０００８】
論理和(OR)ゲート３６０は、文字検出部３１０−１及び文字検出部３１０−２の比較結果の値の少なくとも一方が真(True)であるときに、文字列検出を表す値を出力端子MATCH_Oに出力する。
【０００９】
文字列検出装置３００によれば、入力文字と検出対象文字とを２文字同時に比較できるため、高速な文字列検出が可能である。
【先行技術文献】
【非特許文献】
【００１０】
【非特許文献１】Christopher R. Clark他著「Scalable Pattern Matching for High Speed Networks」、Proceedings of the 12th Annual IEEE Symposium on Field-Programmable Custom Computing Machines、IEEE、2004年4月、ｐｐ．２４９−２５７．
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、関連技術の文字列検出装置では、特定の文字列の有無は検出できるものの、検出した文字列を抽出できないという問題があった。
【００１２】
そこで、発明の目的は、検出した文字列の抽出が可能な文字列抽出装置等を提供することにある。
【課題を解決するための手段】
【００１３】
本発明に係る文字列抽出装置は、
入力文字列から一定条件を満たす文字列を順次抽出するとともに、前記入力文字列から抽出した文字数の累積値である抽出済み文字数を更新する文字列検出部と、
前記文字列検出部で抽出された前記文字列と、当該文字列が抽出される直前の前記抽出済み文字数とを、対応付けて記憶する抽出文字列記憶部と、
前記文字列検出部で更新された前記抽出済み文字数を記憶するとともに、前記文字列検出部が新たに前記抽出済み文字数を更新する際に、更新する前の前記抽出済み文字数を前記文字列検出部へ提供する文字列長記憶部と、
を備えたものである。
【００１４】
本発明に係る文字列抽出方法は、
入力文字列から一定条件を満たす文字列を順次抽出するとともに、前記入力文字列から抽出した文字数の累積値である抽出済み文字数を更新し、
抽出された前記文字列と、当該文字列が抽出される直前の前記抽出済み文字数とを、対応付けて記憶し、
前記文字列検出部で更新された前記抽出済み文字数を記憶するとともに、前記抽出済み文字数を更新する際に、更新する前の前記抽出済み文字数を提供する、
ことを含むものである。
【００１５】
本発明に係る文字列抽出プログラムは、
入力文字列から一定条件を満たす文字列を順次抽出するとともに、前記入力文字列から抽出した文字数の累積値である抽出済み文字数を更新する文字列検出部と、
前記文字列検出部で抽出された前記文字列と、当該文字列が抽出される直前の前記抽出済み文字数とを、対応付けて記憶する抽出文字列記憶部と、
前記文字列検出部で更新された前記抽出済み文字数を記憶するとともに、前記文字列検出部が新たに前記抽出済み文字数を更新する際に、更新する前の前記抽出済み文字数を前記文字列検出部へ提供する文字列長記憶部と、
をコンピュータに実現するためのものである。
【発明の効果】
【００１６】
本発明の効果は、検出した文字列を抽出できることにある。その理由は、検出した文字列を一時的に格納する手段があるためである。また、本発明の他の効果は、入力文字列を複数の文字毎に同時に入力し比較することにより、非常に高速に一致抽出を行うことができる。
【図面の簡単な説明】
【００１７】
【図１】実施形態１の文字列抽出装置を示すブロック図である。
【図２】図２［Ａ］は、実施形態１おける抽出対象文字列を示す構成図である。図２［Ｂ］は、実施形態１における入力文字列を示す構成図である。図２［Ｃ］は、実施形態１における入力文字列の具体例を示す構成図である。
【図３】実施形態１の文字列抽出装置における部分文字列を入力する動作を示すタイミング図である。
【図４】実施形態１の文字列抽出装置における全体の動作を示すフロー図である。
【図５】実施形態２の文字列抽出装置を示すブロック図である。
【図６】実施形態２の文字列抽出装置における全体の動作を示すフロー図である。
【図７】実施形態１の文字列抽出装置における動作の具体例（その１）を示すブロック図である。
【図８】実施形態１の文字列抽出装置における動作の具体例（その２）を示すブロック図である。
【図９】実施形態２の文字列抽出装置における動作の具体例（その１）を示すブロック図である。
【図１０】実施形態２の文字列抽出装置における動作の具体例（その２）を示すブロック図である。
【図１１】関連技術の文字列検出装置を示すブロック図である。
【発明を実施するための形態】
【００１８】
以下、添付図面を参照しながら、本発明を実施するための形態（以下「実施形態」という。）について説明する。なお、本明細書及び図面において、実質的に同一の構成要素については同一の符号を用いる。
【００１９】
［実施形態１］
［構成の説明］
図１は、実施形態１の文字列抽出装置を示すブロック図である。以下、この図面に基づき説明する。まず、本実施形態１の概要について説明する。
【００２０】
本実施形態１の文字列抽出装置１００は、文字列検出部１１０、抽出文字列記憶部１３０及び文字列長記憶部１２０を備える。文字列検出部１１０は、入力文字列から一定条件を満たす文字列を順次抽出するとともに、前記入力文字列から抽出した文字数の累積値である抽出済み文字数を更新する。抽出文字列記憶部１３０は、文字列検出部１１０で抽出された前記文字列と、当該文字列が抽出される直前の前記抽出済み文字数とを、対応付けて記憶する。文字列長記憶部１２０は、文字列検出部１１０で更新された前記抽出済み文字数を記憶するとともに、文字列検出部１１０が新たに前記抽出済み文字数を更新する際に、更新する前の前記抽出済み文字数を文字列検出部１１０へ提供する。
【００２１】
本実施形態１の文字列抽出方法は、文字列抽出装置１００の動作を方法の発明として捉えたものである。本実施形態１の文字列抽出プログラムは、文字列抽出装置１００の各部の機能をコンピュータに実現するためのものである。本プログラムは、非一時的な記録媒体(non-transitory storage medium)、例えば光ディスク、半導体メモリなどに記録されてもよい。その場合、本プログラムは、記録媒体からコンピュータによって読み出され、実行される。
【００２２】
例えば、前記文字列は、前記入力文字列が複数に分割された部分文字列である。前記一定条件は、前記文字列を構成する文字の種類及び前記文字列の文字数を定めたものである。
【００２３】
次に、本実施形態１について更に詳しく説明する。
【００２４】
文字列抽出装置１００は、連続的に文字列を入力し、その中から特定の文字の繰り返しで指定される部分文字列を抽出する装置であって、文字列検出部１１０、文字列長記憶部１２０、抽出文字列記憶部１３０を備えている。文字列検出部１１０は、それぞれ、入力した文字列と抽出対象文字の集合との比較を行い、それらの一致・不一致を判定する。文字列長記憶部１２０は、抽出中の文字列の文字列長（文字数）を記憶する。抽出文字列記憶部１３０は、入力文字列から抽出された文字列を記憶する。
【００２５】
（抽出対象文字列）
図２［Ａ］は、実施形態１における抽出対象文字列を示す構成図である。以下、この図面に基づき説明する。
【００２６】
本実施形態１における抽出対象文字列２０には、抽出対象文字の集合２１、最小文字列長２２、最大文字列長２３が定められている。抽出対象文字列２０は、文字列抽出装置１００によって入力文字列から抽出される部分文字列を指定する。つまり、その部分文字列は、抽出対象文字の集合２１に含まれる文字のみで構成され、その文字列長（文字数）が、最小文字列長２２以上であり、かつ、最大文字列長２３以下である。
【００２７】
例えば、図２［Ａ］に示す抽出対象文字列２０は、抽出対象文字の集合２１が“０〜９”までの数字、最小文字列長２２が“２”、最大文字列長２３が“５”として、正規表現によって定義されている。具体的には“１２”、“２２２”、“５９１５３”などが抽出対象文字列となる。
【００２８】
このとき、文字列抽出装置１００は次のように文字列を抽出する。入力文字列が“１２Ａ”や“２２２Ｂ”や“５９１５３Ｃ”である場合は、“１２”、“２２２”、“５９１５３”をそれぞれ抽出する。また、入力文字列が“０２２６２０１３”のように最大文字列長２３である“５”よりも大きい場合は、最大文字列長２３で指定された文字数分（５文字分）の部分文字列“０２２６２”を抽出する。
【００２９】
ただし、入力文字列が“１”や“２Ｄ”である場合は、抽出対象文字の文字列長が最小文字列長２２である“２”に達していないことにより、抽出対象外であるため何も抽出しない。また、入力文字列が“Ｈ２５０２”や“３Ｅ４Ｆ５”である場合は、‘Ｈ’、‘Ｅ’、‘Ｆ’といった、抽出対象文字の集合２１で指定されている文字以外の文字を含んでいることにより、抽出対象外であるため何も抽出しない。
【００３０】
なお、本実施形態１では、入力文字列の先頭から始まる部分文字列を抽出の対象としているが、入力文字列の途中を抽出開始位置として指定してもよいし、抽出開始位置を指定せずに、任意の文字から始まる部分文字列を抽出してもよい。
【００３１】
（入力文字列）
図２［Ｂ］は、実施形態１における入力文字列を示す構成図である。以下、この図面に基づき説明する。
【００３２】
本実施形態１における入力文字列３０は、任意長を有する複数個の部分文字列３１ａ，３１ｂ，・・・，３１ｎから構成される。つまり、部分文字列３１ａ，・・・は、抽出対象文字列２０で指定された文字列長に一致する文字列が入力文字列３０から検出されたものである。ただし、部分文字列３１ａ，・・・のそれぞれの長さは、全て同じに設定してもよいし、文字列の出現順などに応じて設定してもよい。
【００３３】
例えば、入力文字列がＡＢＣＣＣＣＣＣＣＣＹＺであるとする。このとき、文字列抽出装置１００が一度に入力できる最大の文字列長が“４”であれば、部分文字列とは、ＡＢＣＣ，ＣＣＣＣ，ＣＣＹＺと定義される。無論、最大の文字列長が入力文字列長より大きければ、入力文字列を一度に文字列抽出装置１００に入力することができる。なお、本実施形態１においては、部分文字列３１ａ，３１ｂ，・・・，３１ｎを用いて説明する際に、特にこれらを区別する必要がなければ部分文字列３１と記載する。
【００３４】
（文字列の入力）
図２［Ｃ］は、実施形態１における入力文字列の具体例を示す構成図である。図３は、実施形態１の文字列抽出装置における部分文字列を入力する動作を示すタイミング図である。以下、図１、図２［Ｃ］及び図３を用いて文字列抽出装置１００の入力動作を説明する。
【００３５】
図２［Ｃ］に示す入力文字列４０は、図２［Ｂ］に示す入力文字列３０の一例であり、部分文字列４１と部分文字列４２とからなる。
【００３６】
文字列抽出装置１００は、部分文字列４１及び部分文字列４２が存在した時に文字列を抽出し、時刻Ｔ０では部分文字列４１を入力し、時刻Ｔ１では部分文字列４２を入力する。すなわち、部分文字列は、ある時刻で順序良く文字列抽出装置１００に入力される。
【００３７】
なお、文字列抽出装置１００が部分文字列４１，４２を入力するタイミングは、抽出文字列記憶部１３０の処理能力に応じて決定される。例えば、文字列抽出装置１００は、抽出文字列記憶部１３０が並列処理できない場合、部分文字列４１の部分文字列抽出処理が終了してから部分文字列４２を入力すればよい。
【００３８】
また、文字列抽出装置１００は、並列処理が可能であれば、部分文字列４１の部分文字列抽出処理が実行中であっても、部分文字列４２を入力してもよい。例えば、パイプライン方式で抽出処理を実行することが可能であれば、処理を連続的に実行できるため、高速な処理が可能になる。なお、部分文字列４１，４２の入力方法は、ここで挙げたものに限らない。
【００３９】
［動作の説明］
図４は、実施形態１の文字列抽出装置における全体の動作を示すフロー図である。以下、図１、図２［Ａ］及び図４を参照して、文字列抽出装置１００の全体の動作について説明する。
【００４０】
まず、文字列長記憶部１２０が、抽出済み文字数を“０”に初期化する（図４ステップ１）。続いて、文字列長記憶部１２０が、前記抽出済み文字数を文字列検出部１１０に送る（ステップ２）。続いて、文字列検出部１１０が部分文字列を入力する（ステップ３）。
【００４１】
続いて、文字列検出部１１０が、入力した部分文字列と抽出対象文字列とを、文字列長を考慮して比較する（ステップ４）。例えば、入力した部分文字列の先頭から一文字毎に、抽出対象文字の集合２１に含まれているか否かを、文字列長を考慮して検査する。ここで、最小文字列長２２から抽出済み文字数を差し引いた文字数を、抽出必要文字数とする。最大文字列長２３から抽出済み文字数を差し引いた文字数を、抽出可能文字数とする。
【００４２】
部分文字列の中に抽出対象文字の集合に含まれない抽出対象外文字がある場合には、部分文字列の先頭文字からその抽出対象外文字の直前までの文字列を、抽出部分文字列とする。このとき、当該抽出部分文字列の文字数が抽出必要文字数よりも少ない場合には、抽出不能と判断し、抽出を終了する（ステップ５）。一方、当該抽出部分文字列の文字数が抽出可能文字数よりも多い場合には、部分文字列の先頭文字から抽出可能文字数分の文字列を、抽出部分文字列とする。
【００４３】
入力された部分文字列の全てが抽出対象文字の集合に含まれる場合には、入力された部分文字列全体を抽出部分文字列の候補とする。このとき、当該抽出部分文字列の文字数が抽出可能文字数よりも長い場合には、部分文字列の先頭文字から抽出可能文字数分の文字列を抽出部分文字列とする。
【００４４】
入力された部分文字列の先頭文字が抽出対象文字の集合に含まれない場合には、抽出部分文字列がないものとする。このとき、抽出済み文字数が最小文字列長よりも短い場合には、抽出不能と判断し、抽出を終了する（ステップ５）。
【００４５】
続いて、文字列検出部１１０は、前記抽出部分文字列を抽出文字列記憶部１３０へ送るとともに、前記抽出済み文字数をオフセットとして抽出文字列記憶部１３０へ送る（ステップ６）。オフセットとは、抽出部分文字列の先頭からの距離である。
【００４６】
続いて、抽出文字列記憶部１３０は、前記抽出部分文字列を前記オフセットを考慮して記憶する（ステップ７）。例えば、抽出部分文字列のために用意された記憶装置の各記憶素子に、先頭から番号（アドレス）が与えられている場合には、抽出文字列記憶部１３０は、前記オフセットで指定されたアドレスから順に前記抽出部分文字列を記憶する。
【００４７】
続いて、文字列検出部１１０は、抽出済み文字数を更新し、更新された抽出済み文字数を文字列長記憶部１２０へ送る（ステップ８）。
【００４８】
続いて、部分文字列の中に抽出対象文字の集合に含まれない文字がある場合、又は、抽出部分文字列の文字数と抽出可能文字数が一致している場合には抽出完了とし、抽出文字列記憶部１３０が抽出文字列を出力することにより、抽出が終了する（ステップ９，１０）。それ以外の場合にはステップ２に戻る。
【００４９】
［効果の説明］
本実施形態１によれば、文字列検出部１１０が文字列を検出し、文字列長記憶部１２０が抽出部分文字列のオフセットを記憶し、抽出文字列記憶部１３０が前記オフセットを考慮して前記抽出部分文字列を記憶するため、検出した文字列を抽出できる。また、本実施形態１によれば、入力文字列を複数の文字毎に同時に入力及び比較することにより、高速に文字列を抽出できる。
【００５０】
［実施形態２］
［構成の説明］
図５は、実施形態２の文字列抽出装置を示すブロック図である。以下、この図面に基づき説明する。まず、本実施形態２の概要について説明する。
【００５１】
本実施形態２の文字列抽出装置２００における文字列検出部は、文字列を一文字分ずつそれぞれ抽出する複数の文字検出部２１０と、抽出済み文字数を一文字分ずつそれぞれ更新する複数の文字列長計算部２４０とを有する。また、部分文字列の文字数は、文字検出部２１０の個数に等しく、かつ文字列長計算部２４０の個数に等しい。
【００５２】
次に、本実施形態２について更に詳しく説明する。
【００５３】
本実施形態２の文字列抽出装置２００は、文字検出部２１０−１、２１０−２、・・・、２１０−ｎ、文字列長計算部２４０−１、２４０−２、・・・、２４０−ｎ及び検出状態記憶部２５０を備える点で、実施形態１と異なる。なお、本実施形態２においては、文字検出部２１０−１、２１０−２、・・・、２１０−ｎを用いて説明する際に、特にこれらを区別する必要がないときは文字検出部２１０と記載する。同様に、文字列長計算部２４０−１、２４０−２、・・・、２４０−ｎを用いて説明する際に、特にこれらを区別する必要がないときは文字列長計算部２４０と記載する。
【００５４】
文字検出部２１０は、それぞれ、入力した文字と抽出対象文字の集合とを比較し、それらの一致・不一致を判定する。文字列長記憶部２２０は、抽出中の文字列の文字列長を記憶する。文字列長計算部２４０は、抽出中の文字列の文字列長を計算する。抽出文字列記憶部２３０は、入力文字列から抽出された文字列を記憶する。検出状態記憶部２５０は、直前の検出状態を記憶する。
【００５５】
（文字列の入力）
部分文字列は入力端子DATA_I[1]，DATA_I[2]，・・・，DATA_I[N] に、それぞれ１文字ずつ入力される。また、入力端子DATA_I[1]，DATA_I[2]，・・・，DATA_I[N]に有効な値を入力するとき、入力端子ENABLE_I[1]，ENABLE_I[1]，・・・ENABLE_I[1]の値はそれぞれ真(True)とする。
［動作の説明］
図６は、実施形態２の文字列抽出装置における全体の動作を示すフロー図である。以下、図５及び図６を参照して、文字列抽出装置２００の全体の動作について説明する。
【００５６】
まず、文字列長記憶部２２０が、抽出済み文字数を“０”に初期化する（図６のステップ１１）。続いて、文字列長計算部２４０−１，２４０−２，・・・，２４０−ｎが、それぞれ、対応する入力文字の抽出文字列におけるオフセットを計算し、各オフセットを対応する文字検出部２１０−１，２１０−２，・・・，２１０−ｎへ送る（ステップ１２）。
【００５７】
すなわち、文字列長計算部２４０−１は、文字列長記憶部２２０から抽出済み文字数を受け取り、入力端子ENALBE_I[1]を参照し、入力端子ENALBE_I[1]の値が真であれば（入力端子DATA_I[1]の値が有効であれば）、前記抽出済み文字数を前記オフセットとして、入力文字DATA_I[1]の値が有効である旨の情報とともに、文字検出部２１０−１へ送る。また、文字列長計算部２４０−１は、前記抽出済み文字数に“１”を足した値を文字列長計算部２４０−２へ送る。一方、文字列長計算部２４０−１は、入力端子ENALBE_I[1]の値が真でなければ（入力端子DATA_I[1]の値が有効でなければ）、入力文字DATA_I[1]の値が無効である旨の情報を文字検出部２１０−１へ送り、前記抽出済み文字数を文字列長計算部２４０−２へ送る。
【００５８】
文字列長計算部２４０−２の動作は、文字列長計算部２４０−１とほぼ同様であるが、抽出済み文字数を文字列長計算部２４０−１から受け取り、更新後の抽出済み文字数を文字列長計算部２４０−３に送る点で異なる。文字列長計算部２４０−３，・・・，２４０−ｎの動作も同様である。ただし、文字列長計算部２４０−ｎの動作は、更新後の抽出済み文字数を文字列長記憶部２２０に送る点で他と異なる。
【００５９】
続いて、文字列長記憶部２２０は、更新された抽出済み文字数を記憶する（ステップ１３）。続いて、文字検出部２１０は、部分文字列を入力し、入力した部分文字列と抽出対象文字列とを、文字列長を考慮して比較する（ステップ１４）。
【００６０】
すなわち、文字検出部２１０−１は、入力端子DATA_I[1]から読み込んだ値が有効であれば（文字列長計算部２４０−１からその旨の情報が送られていれば）、入力端子DATA_I[1]の値と抽出対象文字の集合とを、文字列長を考慮して比較する。ここで、文字列長計算部２４０−１から送られた抽出済み文字数を、最小文字列長から差し引いた文字数を、抽出必要文字数とする。文字列長計算部２４０−１から送られた抽出済み文字数を、最大文字列長２３から差し引いた文字数を抽出可能文字数とする。
【００６１】
文字検出部２１０−１は、入力端子DATA_I[1]の値が抽出対象文字の集合に含まれる場合、かつ、抽出可能文字数が“１”以上の場合に、入力端子DATA_I[1]の値を抽出文字として、及び、抽出済み文字数を前記抽出文字のオフセットとして、抽出文字列記憶部２３０へ送る（ステップ１５）。また、文字検出部２１０−１は、比較結果を文字検出部２１０−２に送る。
【００６２】
入力端子DATA_I[1]の値が抽出対象文字の集合に含まれていない場合、かつ、抽出必要文字数が“１”以上の場合には、抽出不能と判断し、抽出を終了する（ステップ１６）。入力端子DATA_I[1]の値が抽出対象文字の集合に含まれていても、抽出可能文字数が“０”以下の場合には、文字検出部２１０−１は抽出文字を抽出文字列記憶部２３０に送らない。この場合は、抽出完了とし、抽出文字列記憶部２３０が抽出文字列を出力することにより、抽出が終了する（ステップ１７）。入力端子DATA_I[1]の値が抽出対象文字の集合に含まれていない場合、かつ、抽出必要文字数が“０”以下の場合には、抽出完了とし、抽出文字列記憶部２３０が抽出文字列を出力することにより、抽出が終了する（ステップ１８）。
【００６３】
文字検出部２１０−２，・・・，２１０−ｎの動作は、文字検出部２１０−１と同様である。最後に、抽出文字列記憶部２３０は、文字検出部２１０から送られた前記抽出部分文字を、前記抽出済み文字数をオフセットとして記憶し、ステップ２に戻る（ステップ１９）。
【００６４】
［効果の説明］
本実施形態２によれば、文字検出部２１０が文字列を検出し、文字列長記憶部２２０が抽出部分文字列のオフセットを記憶し、抽出文字列記憶部２３０が前記オフセットを考慮して前記抽出部分文字列を記憶するため、検出した文字列を抽出できる。また、本実施形態２によれば、入力文字列を複数の文字毎に同時に入力及び比較することにより、高速に文字列を抽出できる。
【００６５】
なお、本実施形態２のその他の構成、作用及び効果は、実施形態１のそれらと同様である。
【００６６】
［実施例１］
次に、図７及び図８は実施形態１の文字列抽出装置における動作の具体例（実施例１）を示すブロック図である。以下、図４、図７及び図８に基づき、実施形態１のより具体的な実施例１について説明する。
【００６７】
本実施例１の文字列抽出装置１００は、一度に入力できる最大の文字列長が“２”であり、図２［Ａ］で指定される文字列、すなわち、２文字以上５文字以下の数字列を抽出する回路である。本実施例１では、入力文字列“２０３Ｅ”を部分文字列“２０”と部分文字列“３Ｅ”に分割して入力する。
【００６８】
図７は、部分文字列“２０”を入力した時の動作を示す。まず、文字列長記憶部１２０が、抽出済み文字数を“０”に初期化する（図４のステップ１）。続いて、文字列長記憶部１２０が、抽出済み文字数“０”を文字列検出部１１０へ送る（ステップ２）。
【００６９】
続いて、文字列検出部１１０が部分文字列“２０”を入力する（ステップ３）。続いて、文字列検出部１１０が、入力した部分文字列“２０”と抽出対象文字列とを、文字列長を考慮して比較する（ステップ４）。
【００７０】
最小文字列長“２”及び最大文字列長“５”から抽出済み文字数“０”をそれぞれ差し引くと、抽出必要文字数は“２”であり、抽出可能文字数は“５”である。部分文字列“２０”の文字はいずれも抽出対象文字の集合に含まれ、部分文字列が抽出可能文字数よりも少ないため、部分文字列全体“２０”が抽出部分文字列となる。
【００７１】
続いて、文字列検出部１１０が、抽出部分文字列“２０”とオフセット“０”とを、抽出文字列記憶部１３０へ送る（ステップ６）。続いて、抽出文字列記憶部１３０は、抽出部分文字列をオフセットを考慮して記憶する（ステップ７）。続いて、文字列検出部１１０が、抽出済み文字数を“２”に更新し、更新された抽出済み文字数“２”を文字列長記憶部１２０へ送る（ステップ８）。
【００７２】
図８は、部分文字列“２０”に続き部分文字列“３Ｅ”を入力した時の動作を示す。まず、文字列長記憶部１２０が、抽出済み文字数“２”を文字列検出部１１０へ送る（ステップ２）。
【００７３】
続いて、文字列検出部１１０が部分文字列“３Ｅ”を入力する（ステップ３）。続いて、文字列検出部１１０が、入力した部分文字列“３Ｅ”と抽出対象文字列とを、文字列長を考慮して比較する（ステップ４）。
【００７４】
最小文字列長“２”及び最大文字列長“５”から抽出済み文字数“２”をそれぞれ差し引くと、抽出必要文字数は“０”であり、抽出可能文字数は“３”である。部分文字列“３Ｅ”の中に抽出対象文字の集合に含まれない文字“Ｅ”があるため、部分文字列の先頭文字からその直前までの文字列“３”を抽出部分文字列とする。文字数は、“１”であり、抽出必要文字数以上かつ抽出可能文字数以下である。
【００７５】
続いて、文字列検出部１１０が、抽出部分文字列“３”とオフセット“２”とを、抽出文字列記憶部１３０へ送る（ステップ６）。続いて、抽出文字列記憶部１３０は、抽出部分文字列をオフセットを考慮して記憶する（ステップ７）。最後に、部分文字列の中に抽出対象文字の集合に含まれない文字があるため抽出完了とし、抽出文字列記憶部１３０が抽出した文字列“２０３”を出力することにより、抽出が終了する。
【００７６】
［実施例２］
次に、図９及び図１０は実施形態２の文字列抽出装置における動作の具体例（実施例２）を示すブロック図である。以下、図６、図９及び図１０に基づき、実施形態２のより具体的な実施例２について説明する。
【００７７】
本実施例２の文字列抽出装置２００は、一度に入力できる最大の文字列長が“２”であり、図２［Ａ］で指定される文字列、すなわち、２文字以上５文字以下の数字列を抽出する回路である。本実施例２では、入力文字列“２０３Ｅ”を部分文字列“２０”と部分文字列“３Ｅ”に分割して入力する。
【００７８】
図９は、部分文字列“２０”を入力した時の動作を示す。まず、文字列長記憶部２２０が、抽出済み文字数を“０”に初期化する（図６のステップ１１）。続いて、文字列長計算部２４０−１、２４０−２が、それぞれ、対応する入力文字の抽出文字列におけるオフセット値を計算し、対応する文字検出部２１０−１、２１０−２へ送る（ステップ１２）。
【００７９】
すなわち、文字列長計算部２４０−１は、文字列長記憶部２２０から抽出済み文字数“０”を受け取るとともに、入力端子ENALBE_I[1]を参照する。入力端子ENALBE_I[1]の値が真であるため、文字列長計算部２４０−１は、抽出済み文字数“０”を文字検出部２１０−１へ、入力文字DATA_I[1]の値が有効である旨の情報とともに送る。また、文字列長計算部２４０−１は、抽出済み文字数に“１”を足した値“１”を文字列長計算部２４０−２へ送る。
【００８０】
文字列長計算部２４０−２は、文字列長計算部２４０−１から抽出済み文字数“１”を受け取るとともに、入力端子ENALBE_I[2]を参照する。入力端子ENALBE_I[2]の値が真であるため、文字列長計算部２４０−２は、抽出済み文字数“１”を文字検出部２１０−２へ、入力文字DATA_I[2]の値が有効である旨の情報とともに送る。また、文字列長計算部２４０−２は、抽出済み文字数に“１”を足した値“２”を文字列長記憶部２２０へ送る。
【００８１】
続いて、文字列長記憶部２２０は、更新された抽出済み文字数“２”を記憶する（ステップ１３）。続いて、文字検出部２１０は部分文字列“２０”を入力する。
【００８２】
文字検出部２１０−１は、入力端子DATA_I[1]の値“２”と抽出対象文字の集合とを、文字列長を考慮して比較する（ステップ１４）。ここで、文字列長計算部２４０−１から送られた抽出済み文字数“０”を最小文字列長“２”から差し引いた文字数“２”を、抽出必要文字数とする。文字列長計算部２４０−１から送られた抽出済み文字数“０”を最大文字列長“５”から差し引いた文字数“５”を、抽出可能文字数とする。
【００８３】
入力端子DATA_I[1]の値“２”が抽出対象文字の集合に含まれ、かつ、抽出可能文字数が“１”以上であるため、文字検出部２１０−１は、入力端子DATA_I[1]の値“２”を抽出文字として抽出文字列記憶部２３０へ送るとともに、抽出済み文字数“０”をオフセットとして抽出文字列記憶部２３０へ送る（ステップ１５）。そして、文字検出部２１０−１は、比較結果を文字検出部２１０−２に送る。
【００８４】
文字検出部２１０−２は、入力端子DATA_I[2]の値“０”と抽出対象文字の集合とを、文字列長を考慮して比較する（ステップ１４）。ここで、文字列長計算部２４０−２から送られた抽出済み文字数“１”を最小文字列長“２”から差し引いた文字数“１”を、抽出必要文字数とする。文字列長計算部２４０−２から送られた抽出済み文字数“１”を最大文字列長“５”から、差し引いた文字数“４”を、抽出可能文字数とする。
【００８５】
入力端子DATA_I[2]の値“０”が抽出対象文字の集合に含まれ、かつ、抽出可能文字数が“１”以上であるため、文字検出部２１０−２は、入力端子DATA_I[2]の値“０”を抽出文字として、及び、抽出済み文字数“１”をオフセットとして、抽出文字列記憶部２３０へ送る（ステップ１５）。そして、文字検出部２１０−２は、比較結果を検出状態記憶部２５０へ送る。
【００８６】
続いて、抽出文字列記憶部２３０は、文字検出部２１０から送られた抽出部分文字をオフセットを考慮して記憶する（ステップ１９）。
【００８７】
図１０は、部分文字列“２０”に続き部分文字列“３Ｅ”を入力した時の動作を示す。まず、文字列長計算部２４０−１，２４０−２が、それぞれ、対応する入力文字の抽出文字列におけるオフセット値を計算し、対応する文字検出部２１０−１，２１０−２へ送る（ステップ１２）。
【００８８】
文字列長計算部２４０−１は、文字列長記憶部２２０から抽出済み文字数“２”を受け取るとともに、入力端子ENALBE_I[1]を参照する。入力端子ENALBE_I[1]の値が真であるため、文字列長計算部２４０−１は、抽出済み文字数“２”を文字検出部２１０−１へ、入力文字DATA_I[1]の値が有効である旨の情報とともに送る。また、文字列長計算部２４０−１は、抽出済み文字数に“１”を足した値“３”を文字列長計算部２４０−２へ送る。
【００８９】
文字列長計算部２４０−２は、文字列長計算部２４０−１から抽出済み文字数“３”を受け取るとともに、入力端子ENALBE_I[2]を参照する。入力端子ENALBE_I[2]の値が真であるため、文字列長計算部２４０−２は、抽出済み文字数“３”を文字検出部２１０−２へ、入力文字DATA_I[2]の値が有効である旨の情報とともに送る。また、文字列長計算部２４０−２は、抽出済み文字数に“１”を足した値“４”を文字列長記憶部２２０へ送る。
【００９０】
続いて、文字列長記憶部２２０は、更新された抽出済み文字数“４”を記憶する（ステップ１３）。続いて、文字検出部２１０は部分文字列“３Ｅ”を入力する。
【００９１】
文字検出部２１０−１は、入力端子DATA_I[1]の値“３”と抽出対象文字の集合とを、文字列長を考慮して比較する（ステップ１４）。ここで、文字列長計算部２４０−１から送られた抽出済み文字数“２”を最小文字列長“２”から差し引いた文字数“０”を、抽出必要文字数とする。文字列長計算部２４０−１から送られた抽出済み文字数“２”を最大文字列長“５”から差し引いた文字数“３”を、抽出可能文字数とする。
【００９２】
入力端子DATA_I[1]の値“３”が抽出対象文字の集合に含まれ、かつ、抽出可能文字数が１以上のため、文字検出部２１０−１は、入力端子DATA_I[1]の値“３”を抽出文字として、及び、抽出済み文字数“２”をオフセットとして、抽出文字列記憶部２３０へ送る（ステップ１５）。そして、文字検出部２１０−１は、比較結果を文字検出部２１０−２に送る。
【００９３】
文字検出部２１０−２は、入力端子DATA_I[2]の値“Ｅ”と抽出対象文字の集合とを、文字列長を考慮して比較する（ステップ１４）。ここで、文字列長計算部２４０−２から送られた抽出済み文字数“３”を最小文字列長“２”から差し引いた文字数“−１”を、抽出必要文字数とする。文字列長計算部２４０−２から送られた抽出済み文字数“３”を最大文字列長“５”から差し引いた文字数“２”を、抽出可能文字数とする。
【００９４】
入力端子DATA_I[2]の値“Ｅ”は抽出対象文字の集合に含まれていないため、抽出文字列記憶部２３０には何も送らない。しかし、抽出必要文字数が“１”より小さいので、抽出不能とは判断しない。最後に、部分文字列の中に抽出対象文字の集合に含まれない文字があるため抽出完了とし、抽出文字列記憶部２３０が抽出文字列を出力することにより、抽出が終了する。
【００９５】
［総括］
以上、本発明を上記実施形態に即して説明したが、本発明は、上記実施形態の構成や動作にのみ限定されるものではなく、本発明の範囲内で当業者であればなしうることが可能な各種変形、修正を含むことはもちろんである。
【００９６】
上記の実施形態の一部又は全部は以下の付記のようにも記載され得るが、本発明は以下の構成に限定されるものではない。
【００９７】
［付記１］入力文字列から一定条件を満たす文字列を順次抽出するとともに、前記入力文字列から抽出した文字数の累積値である抽出済み文字数を更新する文字列検出部と、
この文字列検出部で抽出された前記文字列と、当該文字列が抽出される直前の前記抽出済み文字数とを、対応付けて記憶する抽出文字列記憶部と、
前記文字列検出部で更新された前記抽出済み文字数を記憶するとともに、前記文字列検出部が新たに前記抽出済み文字数を更新する際に、更新する前の前記抽出済み文字数を前記文字列検出部へ提供する文字列長記憶部と、
を備えた文字列抽出装置。
【００９８】
［付記２］前記文字列検出部は、前記文字列を一文字分ずつそれぞれ抽出する複数の文字検出部と、前記抽出済み文字数を一文字分ずつそれぞれ更新する複数の文字列長計算部とを有する、
付記１記載の文字列抽出装置。
【００９９】
［付記３］前記文字列は、前記入力文字列が複数に分割された部分文字列である、
付記１又は２記載の文字列抽出装置。
【０１００】
［付記４］前記文字列は、前記入力文字列が複数に分割された部分文字列であり、
この部分文字列の文字数は、前記複数の文字検出部の個数に等しく、かつ前記複数の文字列長計算部の個数に等しい、
付記２記載の文字列抽出装置。
【０１０１】
［付記５］前記一定条件は、前記文字列を構成する文字の種類及び前記文字列の文字数を定めたものである、
付記１乃至４記載の文字列抽出装置。
【０１０２】
［付記６］入力文字列から一定条件を満たす文字列を順次抽出するとともに、前記入力文字列から抽出した文字数の累積値である抽出済み文字数を更新し、
抽出された前記文字列と、当該文字列が抽出される直前の前記抽出済み文字数とを、対応付けて記憶し、
前記文字列検出部で更新された前記抽出済み文字数を記憶するとともに、前記抽出済み文字数を更新する際に、更新する前の前記抽出済み文字数を提供する、
ことを含む文字列抽出方法。
【０１０３】
［付記７］入力文字列から一定条件を満たす文字列を順次抽出するとともに、前記入力文字列から抽出した文字数の累積値である抽出済み文字数を更新する文字列検出部と、
前記文字列検出部で抽出された前記文字列と、当該文字列が抽出される直前の前記抽出済み文字数とを、対応付けて記憶する抽出文字列記憶部と、
前記文字列検出部で更新された前記抽出済み文字数を記憶するとともに、前記文字列検出部が新たに前記抽出済み文字数を更新する際に、更新する前の前記抽出済み文字数を前記文字列検出部へ提供する文字列長記憶部と、
をコンピュータに実現するための文字列抽出プログラム。
【０１０４】
［付記８］文字列を入力し前記文字列から特定の文字の繰り返しで指定される部分文字列を抽出する装置であって、
文字列長記憶手段と、
文字列検出手段と、
抽出文字列記憶手段と、
を備えたことを特徴とする文字列抽出システム。
【０１０５】
［付記９］文字列を部分文字列に分けて入力する文字列抽出システムであって、
文字列長記憶手段が、抽出中の部分文字列の文字数を計算し、前記文字数を文字列検出手段に送り、前記文字数を記憶し、
文字列検出手段が前記部分文字列に含まれる文字を同時に検出対象文字と比較し、
抽出文字記憶手段が抽出した部分文字列を前記文字数を考慮して記憶する、
ことを特徴とする付記８記載の文字列抽出システム。
【産業上の利用可能性】
【０１０６】
本発明は、ネットワーク上を転送される電文から文字列を抽出するといった用途に適用できる。
【符号の説明】
【０１０７】
２０  抽出対象文字列
２１  抽出対象文字の集合
２２  最小文字列長
２３  最大文字列長
３０  入力文字列
３１  部分文字列
４０  入力文字列
４１，４２  部分文字列
１００  文字列抽出装置
１１０  文字列検出部
１２０  文字列長記憶部
１３０  抽出文字列記憶部
２００  文字列抽出装置
２１０  文字検出部
２２０  文字列長記憶部
２３０  抽出文字列記憶部
２４０  文字列長計算部
２５０  検出状態記憶部
３００  文字列検出装置
３１０  文字検出部
３５０  検出状態記憶部
３６０  論理和(OR)ゲート
【図１】
2014235625.tif 000003
【図２】
2014235625.tif 000004
【図３】
2014235625.tif 000005
【図４】
2014235625.tif 000006
【図５】
2014235625.tif 000007
【図６】
2014235625.tif 000008
【図７】
2014235625.tif 000009
【図８】
2014235625.tif 000010
【図９】
2014235625.tif 000011
【図１０】
2014235625.tif 000012
【図１１】
2014235625.tif 000013