JP2013246720A - 入力文字列確認装置 - Google Patents

入力文字列確認装置 Download PDF

Info

Publication number
JP2013246720A
JP2013246720A JP2012121091A JP2012121091A JP2013246720A JP 2013246720 A JP2013246720 A JP 2013246720A JP 2012121091 A JP2012121091 A JP 2012121091A JP 2012121091 A JP2012121091 A JP 2012121091A JP 2013246720 A JP2013246720 A JP 2013246720A
Authority
JP
Japan
Prior art keywords
character
circuit
input
determination
characters
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2012121091A
Other languages
English (en)
Other versions
JP5942600B2 (ja
Inventor
Shinichiro Tako
真一郎 多湖
Hiroya Inakoshi
宏弥 稲越
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012121091A priority Critical patent/JP5942600B2/ja
Publication of JP2013246720A publication Critical patent/JP2013246720A/ja
Application granted granted Critical
Publication of JP5942600B2 publication Critical patent/JP5942600B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】正規表現回路及び該回路が搭載される装置の小型化を図る。
【解決手段】入力テキストの文字が順に入力され、当該文字が予め定められた文字と一致するかを判定する複数の文字チェック回路34a〜34cと、文字チェック回路の判定の有効/無効を制御する状態ビット38a〜38h及びマスクビット40a〜40jと、複数の文字チェック回路34a〜34cのうちの最後の文字チェック回路が、入力文字と予め定めた文字とが一致すると判定した場合に、入力テキストに正規表現が含まれると判断する照合確認回路42と、を備え、状態ビット及びマスクビットは、判定が有効な文字チェック回路において、入力文字が予め定めた文字と一致すると判定された後、正規表現中の任意の文字の文字数だけ文字が入力されるまでの間、次の文字チェック回路の判定を無効にし、次に入力される文字の判定を有効にする。
【選択図】図2

Description

本件は、入力文字列確認装置に関する。
従来、入力される文字列において、1又は複数の特定文字が存在してから任意の文字を1又は複数挟んで、同一又は別の特定文字が1又は複数存在する箇所(所定のパターン)があれば、検出したいという要望がある(例えば、特許文献1参照)。このような要望は、例えば、特定のコマンドを検出する侵入検知システムや、ペイロード分析によるネットワーク効率化の分野などにおいて多くなっている。
従来においては、入力された文字が特定文字か否かを判断する文字チェック回路を複数並べた正規表現回路に対して、入力された文字列に含まれる文字を順に入力し、所定のパターンの有無を判断する処理を行っている。
この場合、図39に示すように、任意の文字に対応する文字チェック回路には、任意文字を表す「*」を設定し、どのような文字が入力されても次の文字チェック回路を有効にする(状態ビットを0から1にする)ようにしている。
特開2007−102744号公報
しかしながら、文字チェック回路は、各文字を判断するための辞書機能(図39のメモリ部分)を有しており、当該辞書機能には、例えば256ビットの回路を用いる必要がある。このため、文字チェック回路は8ビットの回路等に比べると大きさ(面積や容積)が大きくなり、ひいては、文字チェック回路が搭載されるLSIやFPGAの大きさ(面積や容積)が大きくなるおそれがある。
そこで本件は上記の課題に鑑みてなされたものであり、小型化を図ることが可能な入力文字確認装置を提供することを目的とする。
本明細書に記載の入力文字列確認装置は、特定の文字と、任意の文字の文字数との組み合わせで表される正規表現が入力文字列に含まれるか否かを確認する入力文字列確認装置であって、前記入力文字列に含まれる文字が順に入力され、当該入力された文字が予め定められた判定文字と一致するかを判定する複数の文字判定回路と、前記複数の文字判定回路の判定を有効にするか無効にするかを制御する判定制御回路と、前記複数の文字判定回路のうちの最後の文字判定回路が、入力された文字と前記判定文字とが一致すると判定した場合に、前記入力文字列に前記正規表現が含まれると判断する判断回路と、を備え、前記判定制御回路は、判定が有効な所定の文字判定回路において、入力された文字が判定文字と一致すると判定された後、前記正規表現において定められている任意の文字の文字数だけ文字が入力されるまでの間、前記所定の文字判定回路の次の文字判定回路の判定を無効にし、次に入力される文字の判定を有効にする入力文字列確認装置である。
本明細書に記載の入力文字確認装置は、小型化を図ることができるという効果を奏する。
第1の実施形態に係る処理装置の構成を概略的に示す図である。 図1の正規表現回路を示す図である。 文字チェック回路の処理の概要を示す図である。 第1の実施形態に係る回路マッピング処理を示すフローチャートである。 図5のステップS10の具体的処理を示すフローチャートである。 図5のステップS36(S30)の具体的処理を示すフローチャートである。 図7(a)、図7(b)は、第1の実施形態に係る回路マッピング作成処理を説明するための図(その1)である。 図8(a)、図8(b)は、第1の実施形態に係る回路マッピング作成処理を説明するための図(その2)である。 図9(a)、図9(b)は、第1の実施形態に係る回路マッピング作成処理を説明するための図(その3)である。 照合時におけるCPUの処理を示すフローチャートである。 照合時におけるマスクビットの処理を示すフローチャートである。 照合時におけるバイパスマスクビットの処理を示すフローチャートである。 照合時における転送マスクビットの処理を示すフローチャートである。 照合時における文字チェック回路の処理を示すフローチャートである。 照合時における状態ビットの処理を示すフローチャートである。 照合時における照合確認回路の処理を示すフローチャートである。 図17(a)、図17(b)は、第1の実施形態に係る照合処理を説明するための図(その1)である。 図18(a)、図18(b)は、第1の実施形態に係る照合処理を説明するための図(その2)である。 図19(a)、図19(b)は、第1の実施形態に係る照合処理を説明するための図(その3)である。 図20(a)、図20(b)は、第1の実施形態に係る照合処理を説明するための図(その4)である。 図21(a)、図21(b)は、第1の実施形態に係る照合処理を説明するための図(その5)である。 図22(a)、図22(b)は、第1の実施形態に係る照合処理を説明するための図(その6)である。 図23(a)、図23(b)は、第1の実施形態に係る照合処理を説明するための図(その7)である。 第1の実施形態に係る照合処理を説明するための図(その8)である。 第2の実施形態に係る正規表現回路を示す図である。 第2の実施形態に係る、図5のステップS36(S30)の具体的処理を示すフローチャートである。 図27(a)、図27(b)は、第2の実施形態に係る回路マッピング作成処理を説明するための図(その1)である。 図28(a)、図28(b)は、第2の実施形態に係る回路マッピング作成処理を説明するための図(その2)である。 図29(a)、図29(b)は、第2の実施形態に係る回路マッピング作成処理を説明するための図(その3)である。 図30(a)、図30(b)は、第2の実施形態に係る照合処理を説明するための図(その1)である。 図31(a)、図31(b)は、第2の実施形態に係る照合処理を説明するための図(その2)である。 図32(a)、図32(b)は、第2の実施形態に係る照合処理を説明するための図(その3)である。 図33(a)、図33(b)は、第2の実施形態に係る照合処理を説明するための図(その4)である。 図34(a)、図34(b)は、第2の実施形態に係る照合処理を説明するための図(その5)である。 図35(a)、図35(b)は、第2の実施形態に係る照合処理を説明するための図(その6)である。 図36(a)、図36(b)は、第2の実施形態に係る照合処理を説明するための図(その7)である。 第2の実施形態に係る照合処理を説明するための図(その8)である。 変形例に係る処理装置の概略構成を示す図である。 従来技術を説明するための図である。
《第1の実施形態》
以下、第1の実施形態について、図1〜図24に基づいて詳細に説明する。図1には、第1の実施形態に係る処理装置100の構成が概略的に示されている。処理装置100は、例えば、所定のコマンド(文字列)を検知する侵入検知システム(IDS:Intrusion Detection System)や、所定のコマンド(文字列)を検知してネットワーク効率化を図るペイロード分析システムなどであるものとする。
図1に示すように、処理装置100は、CPU10と、記憶装置12と、FPGA(Field-Programmable Gate Array)20と、を備える。なお、FPGAに代えて、LSI(Large Scale Integration)を用いることとしてもよい。
CPU10は、記憶装置12に格納されている回路マッピング作成プログラムを用いて、外部から入力される正規表現に対応する回路マッピングを作成し、FPGA20に対して入力する。また、CPU10は、外部から入力された入力文字列(入力テキスト)に正規表現が含まれているか否かを確認するため、FPGA20に対して入力文字列を入力する。なお、正規表現とは、a.{2}bや、a.{2,4}bなどと表されるものであり、前者は、a、2文字の任意文字、bの順に並ぶ文字列を意味し、後者は、a、2〜4文字の任意文字、bの順に並ぶ文字列を意味する。
FPGA20は、I/F回路22と、1又は複数の入力文字列確認装置としての正規表現回路30と、を備える。I/F回路22は、CPU10と正規表現回路30との間のデータのやり取りを行う。正規表現回路30は、外部から入力された入力文字列(文字テキスト)に正規表現が含まれているか否かを確認し、確認結果をCPU10に対して送信する。
図2には、正規表現回路30の具体的な構成が示されている。正規表現回路30は、入力文字送信回路36と、文字判定回路としての文字チェック回路34a,34b,34cと、メモリ32a,32b,32cと、8つの状態ビット38a〜38hと、8つのマスクビット40a〜40hと、転送マスクビット40iと、バイパスマスクビット40jと、判断回路としての照合確認回路42と、メモリ44と、を備える。
入力文字送信回路36は、CPU10から入力された入力テキストに含まれる文字を順に、文字チェック回路34a〜34c及び状態ビット38a〜38hに入力する機能を有する。
文字チェック回路34a〜34cは、CPU10によって割り当てられた文字(メモリ32a〜32cに書き込まれた文字)又は文字群に、CPU10から入力された文字(入力文字送信回路36から送信される)が含まれているか否かをチェックする回路である。例えば、図3に示すように、メモリ32a〜32cにおいては、CPU10によって割り当てられた文字のASCIIコードに「○」が関連付けられており、文字チェック回路34a〜34cは、当該メモリ32a〜32cを参照して、入力された文字をチェックする。なお、文字チェック回路に任意文字「*」が割り当てられた場合には、全てのASCIIコードに「○」が関連付けられる。
状態ビット38a〜38hのうち、状態ビット38a〜38dは、文字チェック回路34a,34bの間に配置され、状態ビット38e〜38hは、文字チェック回路34b,34cの間に配置されている。状態ビット38a〜38hは、CPU10から文字が入力されるたびに、保持している情報(1(フラグON)又は0(フラグOFF))を次の状態ビット(右隣の状態ビット)に送る機能(右シフトする機能)を有している。
マスクビット40a〜40hには、CPU10によって正規表現に応じた情報(1又は0)が割り当てられる。マスクビット40a〜40hは、状態ビット38a〜38hと1対1で対応付けられている。マスクビット40a〜40hが保持する情報が1(フラグON)の場合、マスクビット40a〜40hは、対応する状態ビット38a〜38hが保持する情報を後方(右側)の文字チェック回路に送る機能を有している。
転送マスクビット40iは、情報として1(フラグON)を保持している場合に、状態ビット38dの情報を状態ビット38eに送る機能を有している。なお、転送マスクビット40iは、情報として0(フラグOFF)を有している場合には、文字チェック回路34bの出力を次の状態ビット38eへ送る機能を有している。
バイパスマスクビット40jは、情報として1(フラグON)を保持している場合に、文字チェック回路34bの出力を文字チェック回路34cに送る機能を有している。
照合確認回路42は、メモリ44に格納された照合パターンと、文字チェック回路34a〜34cからの出力と、を照合して、入力テキストに正規表現が含まれているか否かを確認する機能を有する。
(回路マッピング処理)
次に、本実施形態のCPU10による、正規表現回路30の回路マッピング処理について図4〜図6のフローチャートに沿って、かつその他図面を適宜参照しつつ詳細に説明する。
図4の処理では、ステップS10において、CPU10が、回路マッピング作成処理を実行する。
ステップS10においては、図5のフローチャートに沿った処理が実行される。図5の処理では、まず、ステップS20において、CPU10は、正規表現をcとする。なお、本実施形態では、一例として、c=a.{2,4}bである場合について説明する。
次いで、ステップS22では、CPU10が、cが空か否かを判断する。ここでの判断が否定された場合には、ステップS24に移行する。ステップS24に移行すると、CPU10は、cの先頭が1文字目か否かを判断する。ここでは、「a」がcの1文字目であるので、ステップS24の判断が肯定され、ステップS32に移行する。
ステップS32に移行すると、CPU10は、cの先頭の文字を次の文字チェック回路に割り当てる。ここでは、先頭の文字チェック回路34aに文字「a」を割り当てる(図7(a)参照)。
次いで、ステップS34では、CPU10は、cから処理した文字列を取り除く。この場合、「a」を取り除くので、c=.{2,4}bとなる(図7(b)の破線枠内参照)。その後は、ステップS22に戻る。ステップS22の判断が否定されて、ステップS24に移行すると、cの先頭は「.」なので、ステップS24の判断が肯定されて、CPU10は、ステップS36に移行する。ステップS36に移行すると、CPU10は、「.」の直後の繰り返し回数を基にマスクパターンを作成し、マスクビットに割り当てる。このステップS36では、具体的には、図6に示すフローチャートに沿った処理が実行される。
図6のステップS50では、CPU10が、最小繰り返し回数がN以上か否かを判断する。なお、Nは、文字チェック回路間に存在するマスクビットの数(本実施形態ではN=4)であるものとする。ここでの判断が否定されると、ステップS52に移行し、最小繰り返し回数分のマスクビットを前から「0」に設定する(図7(b)のマスクビット40a,40b参照)。
次いで、ステップS54では、CPU10が、最大繰り返し回数から最小繰り返し回数を引く(減算する)。この場合、最大繰り返し回数は4から2になる(図7(b)の破線枠内参照)。
次いで、ステップS56では、CPU10は、最大繰り返し回数+1が未設定マスクビット数以上であるか否かを判断する。上記例の場合、最大繰り返し回数(2)+1=3は、未設定のマスクビット数(2)以上であるので、ステップS56の判断は肯定され、ステップS58に移行する。
ステップS58に移行すると、CPU10は、未設定のマスクビットを「1」に設定し、転送マスクビット40i及びバイパスマスクビット40jを「1」に設定する。また、次のステップS60では、CPU10は、任意文字「*」を次の文字チェック回路34b(メモリ32b)に割り当て、次のマスクビットを対象とする。なお、ステップS58、S60の処理が行われた後の状態が、図8(a)に示されている。
次いで、ステップS62では、CPU10は、最大繰り返し回数から未設定マスクビット数を引く。ここでは、最大繰り返し回数から未設定マスクビット数を引くと0となる(図8(a)の破線枠内参照)。その後は、ステップS56に戻る。
ステップS56では、最大繰り返し回数(0)+1が未設定マスクビット数以上か否かを判断する。ここでは、未設定マスクビット数は4(マスクビット40e〜40h)であるので、判断は否定されて、ステップS64に移行する。ステップS64では、CPU10は、最大繰り返し回数+1分の未設定のマスクビットを前から「1」に設定し、残りを0に設定する。本実施形態では、図8(b)に示すように、マスクビット40eが「1」に設定されるとともに、マスクビット40f〜40hが「0」に設定される。
その後は、図5のステップS34に移行する。なお、ステップS50の判断が肯定された場合、すなわち、最小繰り返し回数がN(=4)以上であった場合には、ステップS66〜S70の処理を実行する。具体的には、ステップS66では、CPU10が、各マスクビットを「0」に設定し、転送マスクビット40i及びバイパスマスクビット40jを「1」に設定する。次いで、ステップS68では、CPU10は、任意文字「*」を次の文字チェック回路に割り当て、次のマスクビットを対象とする。次いで、ステップS70では、CPU10は、最小繰り返し回数、及び最大繰り返し回数からNを引く。その後は、ステップS50に戻る。
図5に戻り、図6(ステップS36)の処理の後、ステップS34に移行すると、CPU10は、cから処理した文字列を取り除く。図6の処理では、c=.{2,4}bのうち、「.{2,4}」の処理が行われたので、c=bとなる(図9(a)の破線枠内参照)。その後は、ステップS22に戻る。
ステップS22では、CPU10が、cが空か否かを判断するが、ここでの判断が否定されると、ステップS24に移行する。また、ステップS24では、CPU10がcの先頭が「.」であるか否かを判断するが、ここでの判断が否定されると、ステップS26に移行する。更に、ステップS26では、CPU10が、cの先頭が1文字目か否かを判断するが、ここでの判断が否定されるとステップS28に移行する。また、ステップS28では、CPU10が、直前の処理は「.」又は「.」に関する繰り返しか否かを判断する。ここでの判断が肯定された場合には、ステップS32に移行する。
ステップS32に移行すると、CPU10は、cの先頭文字を次の文字チェック回路に割り当てる。すなわち、CPU10は、文字チェック回路34c(メモリ32c)に対して「b」を割り当てる(図9(a)参照)。そして、ステップS34に移行すると、CPU10は、cから処理した文字列を取り除く。この場合、cは空となる(図9(b)の破線枠内参照)。
次いで、ステップS22では、cが空か否かを判断する。ここでの判断が肯定された場合には、ステップS38に移行する。ステップS38では、CPU10が、現在のチェック回路に対応する照合パターンビットを1にする。この場合、現在の文字チェック回路34cは、先頭から3番目の文字チェック回路であるので、CPU10は、照合確認回路42のメモリ44に「001」を設定する(図9(b)参照)。以上により、図5に示す回路マッピング作成処理は終了し、図4のステップS12に移行する。
なお、ステップS30に移行した場合(文字が連続する部分の処理の場合)には、CPU10は、「.{0}」として、最小繰り返し回数=0、最大繰り返し回数=0のマスクパターンを作成し、マスクビットに割り当てる処理を行う。なお、このステップS30の具体的な処理は、図6と同様となっている。
図4に戻り、ステップS12では、CPU10は、作成した回路マッピングをパターンID(正規表現に割り当てられたID)とともに正規表現回路30に送信し、図4の全処理を終了する。
(照合処理)
次に、上記のようにして作成された回路マッピングを用いた正規表現回路30による照合処理について詳細に説明する。まず、CPU10及び正規表現回路30の各部の処理について説明する。
(CPU10の処理)
図10には、照合処理時のCPU10の処理がフローチャートにて示されている。
図10の処理では、CPU10は、まず、ステップS80において、照合対象の文字列データ(入力テキスト)が入力されるまで待機する。照合対象の文字列データ(入力テキスト)が入力されると、CPU10は、ステップS82に移行する。
ステップS82に移行すると、CPU10は、照合対象の文字列データ(入力テキスト)を、I/F回路22を介して、正規表現回路30に対して送信する。その後は、ステップS80に戻り、ステップS80、S82の処理・判断を繰り返す。
(マスクビット40a〜40hの処理)
図11には、照合処理時のマスクビット40a〜40hの処理がフローチャートにて示されている。
図11の処理では、まず、ステップS90において、マスクビットが1であるか否かを判断する。ここでの判断が肯定された場合には、ステップS92に移行し、マスクビットは、当該マスクビットに対応する状態ビットを次の文字チェク回路(右隣の文字チェック回路)へ送信する。すなわち、マスクビットが1で、対応する状態ビットが0であれば、マスクビットは次の文字チェック回路に0を送信し、対応する状態ビットが1であれば、マスクビットは次の文字チェック回路に1を送信する。
一方、ステップS90の判断が否定された場合、すなわち、マスクビットが0であった場合には、ステップS94に移行し、0を次の文字チェック回路へ送信する。
(バイパスマスクビット40jの処理)
図12には、照合処理時のバイパスマスクビット40jの処理がフローチャートにて示されている。
図12の処理では、まず、ステップS100において、文字チェック回路34bの出力及びバイパスマスクビット40jが1か否かを判断する。ここでの判断が肯定された場合には、ステップS102に移行し、バイパスマスクビットは、1を次の文字チェク回路へ送信する。
一方、ステップS100の判断が否定された場合、すなわち、文字チェック回路34bの出力及びバイパスマスクビット40jのいずれかが0であった場合には、ステップS104に移行し、0を次の文字チェック回路へ送信する。
(転送マスクビット40iの処理)
図13には、照合処理時の転送マスクビット40iの処理がフローチャートにて示されている。
図13の処理では、まず、ステップS105において、転送マスクビット40iが1であるか否かを判断する。ここでの判断が肯定された場合には、ステップS106に移行し、転送マスクビット40iは、前の状態ビット38dの情報を次の状態ビット38eへ送信する。すなわち、転送マスクビット40iが1で、前の状態ビット38dが0であれば、転送マスクビットは0を送信し、転送マスクビット40iが1で、前の状態ビット38dが1であれば、転送マスクビット40iは1を送信する。
一方、ステップS105の判断が否定された場合、すなわち、転送マスクビット40iが0であった場合には、ステップS107に移行する。この場合、転送マスクビット40iは、文字チェック回路34bの出力を次の状態ビット38eへ送信する。
(文字チェック回路34a〜34cの処理)
図14には、照合処理時の文字チェック回路34a〜34cの処理がフローチャートにて示されている。
図14の処理では、まず、ステップS110において、文字チェック回路は、当該文字チェック回路に接続されているマスクビット及びバイパスマスクビットからの出力のうち1つでも1があるか否かを判断する。ここでの判断が否定された場合には、文字チェック回路は、ステップS118において1を出力し、図14の全処理を終了する。一方、ステップS110の判断が肯定された場合には、ステップS112に移行する。
ステップS112に移行すると、文字チェック回路は、入力文字が、設定された文字あるいは文字群と一致しているか否かを確認する。次いで、ステップS114では、文字チェック回路は、一致するものがあったか否かを判断する。ここでの判断が肯定された場合には、文字チェック回路は、ステップS116において1を出力し、否定された場合には、ステップS118において0を出力する。
なお、文字チェック回路34aには、マスクビットもバイパスマスクビットも接続されていない。したがって、文字チェック回路34aにおいては、ステップS110の判断を省略することとしてもよい。
(状態ビット38a〜38hの処理)
図15には、照合処理時の状態ビット38a〜38hの処理がフローチャートにて示されている。
図15の処理では、ステップS120において、状態ビット38a〜38hは、文字チェック回路のチェック結果あるいは前の状態ビットを保持し、次のサイクルで次の状態ビットへ保持した情報を送信する処理を行う。
(照合確認回路の処理)
図16には、照合処理時の照合確認回路42の処理がフローチャートにて示されている。
図16の処理では、照合確認回路42は、ステップS130において、照合パターンが1のビットに対応するチェック回路の出力が1か否かを判断する。ここでの判断が否定された場合には、そのまま図16の処理を終了する。
一方、ステップS130の判断が肯定された場合には、照合確認回路42は、パターンID(図4のステップS12参照)を出力する。
(正規表現回路30による照合処理)
次に、図17〜図24に基づいて、図9(b)のように回路マッピングされた正規表現回路30を用いた照合処理について詳細に説明する。なお、以下の説明では、上述した各フローチャートのステップ番号についても適宜併記するものとする。
本実施形態では、前述した回路マッピング(正規表現a.{2,4}b)(図9(b)参照)を受信した正規表現回路30に対して、入力テキスト:abaabccbが入力された場合について説明する。なお、以下においては、入力テキスト:abaabccbのうち、入力される文字には「」を付して表記するものとする
(「a」baabccbの入力)
図17(a)には、入力テキスト:abaabccbの最初の文字「a」が入力文字送信回路36に入力され、各文字チェック回路、各状態ビットへ送信された状態が示されている。この場合、文字チェック回路34aでは、メモリ32aに格納されている文字「a」と入力文字が一致している(「○」と表記)ので、図17(b)に示すように、状態ビット38aに「1」を出力するとともに、照合確認回路42に「1」を出力する(S116(図14))。一方、文字チェック回路34bでは、マスクビット40a〜40dからの出力の全てが0であるので、文字チェックを行わず(「×」と表記)、バイパスマスクビット40j、照合確認回路42に「0」を出力する(S110:否定、S118(図14))。また、文字チェック回路34cでは、マスクビット40e〜40h及びバイパスマスクビット40jからの出力の全てが0であるので、文字チェックを行わず(「×」と表記)、照合確認回路42に「0」を出力する(S110:否定、S118(図14))。
なお、この場合における照合確認回路42に対する文字チェック回路34a〜34cからの出力は「100」であり、照合パターン「001」の1に対応するビットが「0」である(S130(図16):否定)。したがって、照合確認回路42からCPU10に対してパターンIDは出力されない。
(a「b」aabccbの入力)
図18(a)には、入力テキスト:abaabccbの2番目の文字「b」が入力文字送信回路36に入力され、各文字チェック回路、各状態ビットへ送信された状態が示されている。この場合、文字チェック回路34aでは、メモリ32aに格納されている文字「a」と入力文字が一致していない(「×」と表記)ので、図18(b)に示すように、状態ビット38aに「0」を出力するとともに、照合確認回路42に「0」を出力する。なお、状態ビット38a〜38hでは、「b」が入力される直前に、予め次の状態ビットに対して保持していた情報(0又は1)を送っておく(右にシフトしておく)ものとする(図18(b)参照、S120(図15))。
一方、文字チェック回路34b、34cでは、マスクビット40a〜40hやバイパスマスクビット40jからの出力の全てが0である。したがって、文字チェック回路34b、34cでは文字チェックを行わず(「×」と表記)、バイパスマスクビット40j及び照合確認回路42に「0」を出力する。
なお、この場合における照合確認回路42に対する文字チェック回路34a〜34cからの出力は「000」であり、照合パターン「001」の1に対応するビットが「0」である。したがって、照合確認回路42からCPU10に対してパターンIDは出力されない。
(ab「a」abccbの入力)
図19(a)には、入力テキスト:abaabccbの3番目の文字「a」が入力文字送信回路36に入力され、各文字チェック回路、各状態ビットへ送信された状態が示されている。この場合、文字チェック回路34aでは、メモリ32aに格納されている文字「a」と入力文字が一致しているので(「○」と表記)、図19(b)に示すように、状態ビット38aに「1」を出力するとともに、照合確認回路42に「1」を出力する。なお、状態ビット38a〜38hでは、「a」が入力される直前に、予め次の状態ビットに対して保持していた情報(0又は1)を送っておく(右にシフトしておく)ものとする。
一方、文字チェック回路34b、34cでは、マスクビット40a〜40hやバイパスマスクビット40jからの出力の全てが0である。したがって、文字チェック回路34b、34cでは、文字チェックを行わず(「×」と表記)、バイパスマスクビット40jや照合確認回路42に「0」を出力する。
なお、この場合における照合確認回路42に対する文字チェック回路34a〜34cからの出力は「100」であり、照合パターン「001」の1に対応するビットが「0」である。したがって、照合確認回路42からCPU10に対してパターンIDは出力されない。
(aba「a」bccbの入力)
図20(a)には、入力テキスト:abaabccbの4番目の文字「a」が入力文字送信回路36に入力され、各文字チェック回路、各状態ビットへ送信された状態が示されている。この場合、文字チェック回路34aでは、メモリ32aに格納されている文字「a」と入力文字が一致している(「○」と表記)。一方、文字チェック回路34bでは、保持する情報が「1」のマスクビット40cから、状態ビット38cの情報「1」が送信されてくるため(S92(図11))、文字チェックを行う。この場合、文字チェック回路34bのメモリ32bには、任意文字「*」が設定されているので、入力文字「a」と一致することになる(「○」と表記)。なお、文字チェック回路34cについては、マスクビット40e〜40h及びバイパスマスクビット40jからの出力が0なので、文字チェックは行われない(「×」と表記)。
したがって、入力テキスト:abaabccbの4番目の文字「a」が入力された場合、図20(a)から状態ビット38a〜38hの情報が右にシフトした状態で、図20(b)に示すように、文字チェック回路34aから状態ビット38a及び照合確認回路42に「1」が送信される。また、文字チェック回路34bから照合確認回路42及びバイパスマスクビット40jに「1」が送信され、文字チェック回路34cから照合確認回路42に「0」が送信される。
なお、この場合における照合確認回路42に対する文字チェック回路34a〜34cからの出力は「110」であり、照合パターン「001」の1に対応するビットが「0」である。したがって、照合確認回路42からCPU10に対してパターンIDは出力されない。
(abaa「b」ccbの入力)
図21(a)には、入力テキスト:abaabccbの5番目の文字「b」が入力文字送信回路36に入力され、各文字チェック回路、各状態ビットへ送信された状態が示されている。この場合、文字チェック回路34aでは、メモリ32aに格納されている文字「a」と入力文字が一致していない(「×」と表記)。一方、文字チェック回路34bでは、保持する情報が「1」のマスクビット40dから、状態ビット38dの情報「1」が送信されてくるため、文字チェックを行う。この場合、文字チェック回路34bのメモリ32bには、任意文字「*」が設定されているので、入力文字「b」と一致することになる(「○」と表記)。また、文字チェック回路34cでは、保持する情報が「1」のバイパスマスクビット40jから、文字チェック回路34bから出力された情報「1」が送信されてくるため、文字チェックを行う。この場合、文字チェック回路34cのメモリ32cには、文字「b」が設定されているので、入力文字「b」と一致することになる(「○」と表記)。
したがって、入力テキスト:abaabccbの5番目の文字「b」が入力された場合には、図21(a)から状態ビット38a〜38hの情報が右にシフトした状態で、図21(b)に示すように、文字チェック回路34aから状態ビット38a及び照合確認回路42に「0」が送信される。また、文字チェック回路34bから照合確認回路42及びバイパスマスクビット40jに「1」が送信され、文字チェック回路34cから照合確認回路42に「1」が送信される。
この場合、照合確認回路42に対する文字チェック回路34a〜34cからの出力は「011」であり、照合パターン「001」の1に対応するビットが「1」であるので、CPU10に対して、パターンIDが出力されることになる(S132(図16))。
(abaab「c」cbの入力)
図22(a)には、入力テキスト:abaabccbの6番目の文字「c」が入力文字送信回路36に入力され、各文字チェック回路、各状態ビットへ送信された状態が示されている。この場合、文字チェック回路34aでは、メモリ32aに格納されている文字「a」と入力文字が一致していない(「×」と表記)。一方、文字チェック回路34bでは、保持する情報が「1」のマスクビット40cから、状態ビット38cの情報「1」が送信されてくるため、文字チェックを行う。この場合、文字チェック回路34bのメモリ32bには、任意文字「*」が設定されているので、入力文字「c」と一致することになる(「○」と表記)。また、文字チェック回路34cでは、保持する情報が「1」のバイパスマスクビット40jから、文字チェック回路34bから出力された情報「1」が送信されてくるため、文字チェックを行う。この場合、文字チェック回路34cのメモリ32cには、文字「b」が設定されているので、入力文字「c」とは一致しない(「×」と表記)。
したがって、入力テキスト:abaabccbの6番目の文字「c」が入力された場合には、図22(a)から状態ビット38a〜38hの情報が右にシフトした状態で、図22(b)に示すように、文字チェック回路34aから状態ビット38a及び照合確認回路42に「0」が送信される。また、文字チェック回路34bから照合確認回路42及びバイパスマスクビット40jに「1」が送信され、文字チェック回路34cから照合確認回路42に「0」が送信される。
この場合、照合確認回路42に対する文字チェック回路34a〜34cからの出力は「010」であり、照合パターン「001」の1に対応するビットが「0」である。したがって、照合確認回路42からCPU10に対してパターンIDは出力されない。
(abaabc「c」bの入力)
図23(a)には、入力テキスト:abaabccbの7番目の文字「c」が入力文字送信回路36に入力され、各文字チェック回路、各状態ビットへ送信された状態が示されている。この場合、文字チェック回路34aでは、メモリ32aに格納されている文字「a」と入力文字が一致していない(「×」と表記)。一方、文字チェック回路34bでは、保持する情報が「1」のマスクビット40c、40dから、状態ビット38c,38dの情報「1」が送信されてくるため、文字チェックを行う。この場合、文字チェック回路34bのメモリ32bには、任意文字「*」が設定されているので、入力文字「c」と一致することになる(「○」と表記)。また、文字チェック回路34cでは、保持する情報が「1」のバイパスマスクビット40jから、文字チェック回路34bから出力された情報「1」が送信されてくるため、文字チェックを行う。この場合、文字チェック回路34cのメモリ32cには、文字「b」が設定されているので、入力文字「c」とは一致しない(「×」と表記)。
したがって、入力テキスト:abaabccbの7番目の文字「c」が入力された場合には、図23(a)から状態ビット38a〜38hの情報が右にシフトした状態で、図23(b)に示すように、文字チェック回路34aから状態ビット38a及び照合確認回路42に「0」が送信される。また、文字チェック回路34bから照合確認回路42及びバイパスマスクビット40jに「1」が送信され、文字チェック回路34cから照合確認回路42に「0」が送信される。
この場合、照合確認回路42に対する文字チェック回路34a〜34cからの出力は「010」であり、照合パターン「001」の1に対応するビットが「0」であるので、パターンIDは出力されない。
(abaabcc「b」の入力)
図24には、入力テキスト:abaabccbの8番目の文字「b」が入力文字送信回路36に入力され、各文字チェック回路、各状態ビットへ送信された状態が示されている。この場合、文字チェック回路34aでは、メモリ32aに格納されている文字「a」と入力文字が一致していない(「×」と表記)。一方、文字チェック回路34bでは、保持する情報が「1」のマスクビット40dから、状態ビット38dの情報「1」が送信されてくるため、文字チェックを行う。この場合、文字チェック回路34bのメモリ32bには、任意文字「*」が設定されているので、入力文字「c」と一致することになる(「○」と表記)。また、文字チェック回路34cでは、保持する情報が「1」のバイパスマスクビット40jから文字チェック回路34bの出力「1」が送信されてきたり、保持する情報が「1」のマスクビット40eから、状態ビット38eの情報「1」が送信されてくるため、文字チェックを行う。この場合、文字チェック回路34cのメモリ32cには、文字「b」が設定されているので、入力文字「b」と一致する(「○」と表記)。
したがって、入力テキスト:abaabccbの8番目の文字「b」が入力された場合には、文字チェック回路34aから照合確認回路42に「0」が送信され、文字チェック回路34bから照合確認回路42に「1」が送信され、文字チェック回路34cから照合確認回路42に「1」が送信される。
この場合、照合確認回路42に対する文字チェック回路34a〜34cからの出力は「011」であり、照合パターン「001」の1に対応するビットが「1」であるので、CPU10に対して、パターンIDが出力されることになる。
上述したように、図21や図24においてパターンIDが出力されることで、入力テキスト:abaabccbの中に、正規表現a.{2,4}bが含まれているという情報を出力することができる。
なお、これまでの説明からわかるように、状態ビット38a〜38h及びマスクビット40a〜40jを含んで、複数の文字判定回路の判定を有効にするか無効にするかを制御する判定制御回路としての機能が実現されている。
以上、詳細に説明したように、本第1の実施形態によると、入力テキストに含まれる文字が順に入力され、当該入力された文字が予め定められた文字と一致するかを判定する複数の文字チェック回路34a〜34cと、文字チェック回路の判定を有効にするか無効にするかを制御する状態ビット38a〜38h及びマスクビット40a〜40jと、複数の文字チェック回路34a〜34cのうちの最後の文字チェック回路が、入力文字と予め定めた文字とが一致すると判定した場合に、前記入力テキストに正規表現が含まれると判断し、パターンIDを出力する照合確認回路42と、を備え、状態ビット38a〜38h及びマスクビット40a〜40jは、判定が有効な文字チェック回路において、入力文字が予め定めた文字と一致すると判定された後、正規表現において定められている任意の文字の文字数だけ文字が入力されるまでの間、次の文字チェック回路の判定を無効にし、次に入力される文字の判定を有効にする。このようにすることで、本第1の実施形態では、従来のように正規表現に含まれる任意の文字の文字数に対応する文字チェック回路を用意しなくても、入力テキストに正規表現が含まれるか否かを判断することができる。これにより、文字チェック回路の数を減らすことができるので、正規表現回路30の大きさを小さくすることができ、ひいては、正規表現回路30が搭載されるFPGA20の小型化を図ることが可能となる。また、文字チェック回路の数を減らすことで、正規表現回路やFPGA20のコスト削減も可能となる。
また、本第1の実施形態では、マスクビット40a〜40iの情報(1又は0)と、状態ビット38a〜38hの情報(1又は0)に基づいて、文字チェック回路の判定を有効にしたり無効にしたりする。これにより、複雑な回路を用いることなく、正規表現回路30を実現することが可能である。また、本第1の実施形態では、正規表現において任意の文字の文字数が範囲で指定されている場合であっても、当該範囲に対応するマスクビットに1を設定しておくことで、対応することができる。これにより、簡易な構成で、正規表現における任意文字の範囲指定に対応することができる。
また、本第1の実施形態では、正規表現で定められている任意文字の文字数よりも、文字チェック回路間に配列されているマスクビットの数が少ない場合には、文字チェック回路に任意文字「*」を入力することで、文字チェック回路の前後のマスクビットを連続的に用いることとしている。これにより、任意文字の文字数が文字チェック回路間のマスクビットの数より多い場合であっても柔軟に対応することができる。
なお、上記第1の実施形態で図示した構成では、正規表現に含まれる文字数や、任意文字の数によっては対応できない場合もある。このような場合には、実際の使用状況等を想定して、回路設計段階において、マスクビットや状態ビットの数を増やしたり、文字チェック回路の数を増やしたりすれば良い。
《第2の実施形態》
次に、第2の実施形態について、図25〜図37に基づいて、詳細に説明する。本第2の実施形態では、正規表現回路30’が、第1の実施形態の正規表現回路30と一部異なっている。
本第2の実施形態の正規表現回路30’は、図25に示すように、図2の正規表現回路30に存在していた転送マスクビット40iが省略されており、文字チェック回路34bと状態ビット38eが接続されている。また、本第2の実施形態では、CPU10は、回路マッピングの際に、第1の実施形態で説明した図6の処理に代えて図26の処理を行う。また、本第2の実施形態では、転送マスクビット40iが省略されているので、図13の処理も省略される。
ここで、図26の処理では、図6のステップS58に代えて、ステップS58’が実行される。具体的には、ステップS58’では、CPU10は、未設定のマスクビットを1に設定しバイパスマスクビット40jを1に設定する。また、図26の処理では、図6のステップS66に代えて、ステップS66’が実行される。具体的には、ステップS66’では、CPU10は、最終マスクビット以外を0、最終マスクビットを1、バイパスマスクビット40jを0に設定する。なお、図26のその他の処理については、図6と同様となっている。
なお、図27〜図29には、本第2の実施形態における回路マッピング作成処理の手順が示されている。なお、図27〜図29においては、正規表現a.{5,6}bの回路マッピングを作成する場合について図示している。
図27(a)では、文字チェック回路34aに文字「a」が割り当てられ(S32(図5))、図27(b)では、マスクビット40a〜40d及びバイパスマスクビット40jに情報(1又は0)が割り当てられるとともに(S36)、文字チェック回路34bに任意文字「*」が割り当てられる(S32)。
また、図28(a)では、マスクビット40eに情報(0)が割り当てられ、図28(b)では、マスクビット40f〜40hが割り当てられる。
更に、図29(a)では、文字チェック回路34cに文字「b」が割り当てられ、図29(b)では、照合確認回路42に照合パターン「001」が定められ(S38)、回路マッピング作成処理が終了する。
次に、図29(b)のように回路マッピングされた正規表現回路30’を用いた、照合処理について、図30〜図37に基づいて説明する。なお、本第2の実施形態においては、回路マッピング(正規表現a.{5,6}b)された正規表現回路30’に、上記第1の実施形態と同一の入力テキスト:abaabccbが入力された場合について説明する。
(「a」baabccbの入力)
図30(a)には、入力テキスト:abaabccbの最初の文字「a」が入力文字送信回路36に入力され、各文字チェック回路、各状態ビットへ送信された状態が示されている。この場合、文字チェック回路34aでは、メモリ32aに格納されている文字「a」と入力文字が一致している(「○」と表記)ので、図30(b)に示すように、状態ビット38aに「1」を出力するとともに、照合確認回路42に「1」を出力する。一方、文字チェック回路34bでは、マスクビットからの出力の全てが0であるので、文字チェックを行わず(「×」と表記)、状態ビット38e、バイパスマスクビット40j、照合確認回路42に「0」を出力する。また、文字チェック回路34cでは、マスクビット及びバイパスマスクビット40jからの出力の全てが0であるので、文字チェックを行わず(「×」と表記)、照合確認回路42に「0」を出力する。なお、この場合における照合確認回路42に対する文字チェック回路34a〜34cからの出力は「100」であり、照合パターン「001」の1に対応するビットが「0」であるので、照合確認回路42からパターンIDは出力されない。
(a「b」aabccbの入力)
図31(a)には、入力テキスト:abaabccbの2番目の文字「b」が入力文字送信回路36に入力され、各文字チェック回路、各状態ビットへ送信された状態が示されている。この場合、文字チェック回路34aでは、メモリ32aに格納されている文字「a」と入力文字が一致していない(「×」と表記)ので、図31(b)に示すように、状態ビット38aに「0」を出力するとともに、照合確認回路42に「0」を出力する。一方、文字チェック回路34b、34cでは、マスクビットやバイパスマスクビットからの出力の全てが0であるので、文字チェックを行わず(「×」と表記)、照合確認回路42等に「0」を出力する。なお、この場合における照合確認回路42に対する文字チェック回路34a〜34cからの出力は「000」であり、照合パターン「001」の1に対応するビットが「0」であるので、照合確認回路42からパターンIDは出力されない。
(ab「a」abccbの入力)
図32(a)には、入力テキスト:abaabccbの3番目の文字「a」が入力文字送信回路36に入力され、各文字チェック回路、各状態ビットへ送信された状態が示されている。この場合、文字チェック回路34aでは、メモリ32aに格納されている文字「a」と入力文字が一致している(「○」と表記)ので、図32(b)に示すように、状態ビット38aに「1」を出力するとともに、照合確認回路42に「1」を出力する。
一方、文字チェック回路34b、34cでは、マスクビットやバイパスマスクビットからの出力の全てが0であるので、文字チェックを行わず(「×」と表記)、照合確認回路42等に「0」を出力する。なお、この場合における照合確認回路42に対する文字チェック回路34a〜34cからの出力は「100」であり、照合パターン「001」の1に対応するビットが「0」であるので、照合確認回路42からパターンIDは出力されない。
(aba「a」bccbの入力)
図33(a)には、入力テキスト:abaabccbの4番目の文字「a」が入力文字送信回路36に入力され、各文字チェック回路、各状態ビットへ送信された状態が示されている。この場合、文字チェック回路34aでは、メモリ32aに格納されている文字「a」と入力文字が一致している(「○」と表記)ので、図33(b)に示すように、状態ビット38aに「1」を出力するとともに、照合確認回路42に「1」を出力する。
一方、文字チェック回路34b、34cでは、マスクビットやバイパスマスクビットからの出力の全てが0であるので、文字チェックを行わず(「×」と表記)、照合確認回路42等に「0」を出力する。なお、この場合における照合確認回路42に対する文字チェック回路34a〜34cからの出力は「100」であり、照合パターン「001」の1に対応するビットが「0」であるので、照合確認回路42からパターンIDは出力されない。
(abaa「b」ccbの入力)
図34(a)には、入力テキスト:abaabccbの5番目の文字「b」が入力文字送信回路36に入力され、各文字チェック回路、各状態ビットへ送信された状態が示されている。この場合、文字チェック回路34aでは、メモリ32aに格納されている文字「a」と入力文字が一致していない(「×」と表記)。一方、文字チェック回路34bでは、保持する情報が「1」のマスクビット40dから、状態ビット38dの情報「1」が送信されてくるため、文字チェックを行う。この場合、文字チェック回路34bのメモリ32bには、任意文字「*」が設定されているので、入力文字「b」と一致することになる(「○」と表記)。これに対し、文字チェック回路34cでは、マスクビット40e〜40hやバイパスマスクビット40jからの出力の全てが0であるので、文字チェックを行わず(「×」と表記)、照合確認回路42に「0」を出力する。
したがって、入力テキスト:abaabccbの5番目の文字「b」が入力された場合には、図34(b)に示すように、文字チェック回路34aから状態ビット38a及び照合確認回路42に「0」が送信される。また、文字チェック回路34bから照合確認回路42、状態ビット38e、バイパスマスクビット40jに対して「1」が送信され、文字チェック回路34cから照合確認回路42に対して「0」が送信される。
この場合、照合確認回路42に対する文字チェック回路34a〜34cからの出力は「010」であり、照合パターン「001」の1に対応するビットが「0」であるので、照合確認回路42からパターンIDは出力されない。
(abaab「c」cbの入力)
図35(a)には、入力テキスト:abaabccbの6番目の文字「c」が入力文字送信回路36に入力され、各文字チェック回路、各状態ビットへ送信された状態が示されている。この場合、文字チェック回路34aでは、メモリ32aに格納されている文字「a」と入力文字が一致していない(「×」と表記)。また、文字チェック回路34bでは、マスクビット40a〜40dからの出力の全てが0であるので、文字チェックを行わない(「×」と表記)。また、文字チェック回路34cでは、保持する情報が「1」のバイパスマスクビット40jから、文字チェック回路34bの出力「1」が送信されてくるため、文字チェックを行う。この場合、文字チェック回路34cのメモリ32cには、文字「b」が設定されているので、入力文字「c」とは一致しない(「×」と表記)。
したがって、入力テキスト:abaabccbの6番目の文字「c」が入力された場合には、図35(a)から状態ビット38a〜38hの情報が右にシフトした状態で、図35(b)に示すように、文字チェック回路34aから状態ビット38a及び照合確認回路42に「0」が送信される。また、文字チェック回路34bから照合確認回路42、状態ビット38e、バイパスマスクビット40jに「0」が送信され、文字チェック回路34cから照合確認回路42に「0」が送信される。
この場合、照合確認回路42に対する文字チェック回路34a〜34cからの出力は「000」であり、照合パターン「001」の1に対応するビットが「0」であるので、照合確認回路42からパターンIDは出力されない。
(abaabc「c」bの入力)
図36(a)には、入力テキスト:abaabccbの7番目の文字「c」が入力文字送信回路36に入力され、各文字チェック回路、各状態ビットへ送信された状態が示されている。この場合、文字チェック回路34aでは、メモリ32aに格納されている文字「a」と入力文字が一致していない(「×」と表記)。一方、文字チェック回路34bでは、保持する情報が「1」のマスクビット40dから、状態ビット38dの情報「1」が送信されてくるため、文字チェックを行う。この場合、文字チェック回路34bのメモリ32bには、任意文字「*」が設定されているので、入力文字「c」と一致することになる(「○」と表記)。また、文字チェック回路34cでは、保持する情報が「1」のマスクビット40fから、状態ビット38fの情報「1」が送信されてくるため、文字チェックを行う。この場合、文字チェック回路34cのメモリ32cには、文字「b」が設定されているので、入力文字「c」とは一致しない(「×」と表記)。
したがって、入力テキスト:abaabccbの7番目の文字「c」が入力された場合には、図36(a)から状態ビット38a〜38hの情報が右にシフトした状態で、図36(b)に示すように、文字チェック回路34aから状態ビット38a及び照合確認回路42に「0」が送信される。また、文字チェック回路34bから照合確認回路42、状態ビット38e、バイパスマスクビット40jに「1」が送信され、文字チェック回路34cから照合確認回路42に「0」が送信される。
この場合、照合確認回路42に対する文字チェック回路34a〜34cからの出力は「010」であり、照合パターン「001」の1に対応するビットが「0」であるので、照合確認回路42からパターンIDは出力されない。
(abaabcc「b」の入力)
図37には、入力テキスト:abaabccbの8番目の文字「b」が入力文字送信回路36に入力され、各文字チェック回路、各状態ビットへ送信された状態が示されている。この場合、文字チェック回路34aでは、メモリ32aに格納されている文字「a」と入力文字が一致していない(「×」と表記)。一方、文字チェック回路34bでは、保持する情報が「1」のマスクビット40dから、状態ビット38dの情報「1」が送信されてくるため、文字チェックを行う。この場合、文字チェック回路34bのメモリ32bには、任意文字「*」が設定されているので、入力文字「c」と一致することになる(「○」と表記)。また、文字チェック回路34cでは、保持する情報が「1」のマスクビット40gから、状態ビット38gの情報「1」が送信されてくるため、文字チェックを行う。この場合、文字チェック回路34cのメモリ32cには、文字「b」が設定されているので、入力文字「b」と一致する(「○」と表記)。
したがって、入力テキスト:abaabccbの8番目の文字「b」が入力された場合には、文字チェック回路34aから照合確認回路42に「0」が送信され、文字チェック回路34bから照合確認回路42に「1」が送信され、文字チェック回路34cから照合確認回路42に「1」が送信される。この場合、照合確認回路42に対する文字チェック回路34a〜34cからの出力は「011」であり、照合パターン「001」の1に対応するビットが「1」であるので、照合確認回路42からCPU10に対してパターンIDが出力されることになる。
このように、パターンIDが出力されることで、入力テキスト:abaabccbの中に、正規表現a.{5,6}bが含まれているという情報を出力することができる。
以上、詳細に説明したように、本第2の実施形態によると、上記第1の実施形態と同様、従来のように正規表現に含まれる任意の文字の文字数に対応する文字チェック回路を用意しなくても、入力テキストに正規表現が含まれるか否かを判断することができる。これにより、文字チェック回路の数を減らすことができるので、正規表現回路30の大きさを小さくすることができ、ひいては、正規表現回路30が搭載されるFPGA20の小型化を図ることが可能となる。また、文字チェック回路の数を減らすことで、正規表現回路やFPGA20のコスト削減も可能となる。
なお、上記各実施形態では、FPGA20(又はLSI)とCPU10とが別体である場合について説明したが、これに限らず、図38に示すように、FPGA20’上にCPU10が搭載されていてもよい。
上述した各実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
なお、以上の説明に関して更に以下の付記を開示する。
(付記1) 特定の文字と、任意の文字の文字数との組み合わせで表される正規表現が入力文字列に含まれるか否かを確認する入力文字列確認装置であって、
前記入力文字列に含まれる文字が順に入力され、当該入力された文字が予め定められた判定文字と一致するかを判定する複数の文字判定回路と、
前記複数の文字判定回路の判定を有効にするか無効にするかを制御する判定制御回路と、
前記複数の文字判定回路のうちの最後の文字判定回路が、入力された文字と前記判定文字とが一致すると判定した場合に、前記入力文字列に前記正規表現が含まれると判断する判断回路と、を備え、
前記判定制御回路は、判定が有効な所定の文字判定回路において、入力された文字が判定文字と一致すると判定された後、前記正規表現において定められている任意の文字の文字数だけ文字が入力されるまでの間、前記所定の文字判定回路の次の文字判定回路の判定を無効にし、次に入力される文字の判定を有効にすることを特徴とする入力文字列確認装置。
(付記2) 前記判定制御回路は、
前記所定の文字判定回路と前記次の文字判定回路との間に配列された複数のマスクビットと、該複数のマスクビットに対応して配列された前記マスクビットと同数の状態ビットとを有し、
前記正規表現において定められている任意の文字の文字数に対応するマスクビットに予めフラグを立てておき、
前記所定の文字判定回路において前記入力された文字が予め定められた特定の文字であったと判定されたときに状態ビットの先頭にフラグを立て、
前記入力文字列に含まれる文字が入力される度に、前記状態ビットのフラグを後方に1つずつ遷移させ、
フラグが立っている状態ビットとフラグが立っているマスクビットとの位置が一致した場合に、次に入力される文字の前記次の文字判定回路における判定を有効にすることを特徴とする請求項1に記載の入力文字列確認装置。
(付記3) 前記判定制御回路は、
正規表現で定められている任意の文字の文字数よりも、前記所定の文字判定回路と前記次の文字判定回路との間に配列されたマスクビットの数が少ない場合には、
前記次の文字判定回路の判定文字として任意の文字を定め、当該次の文字判定回路の前後の複数のマスクビットを連続するマスクビットとして用いることを特徴とする付記2に記載の入力文字列確認装置。
(付記4) 前記正規表現において、前記任意の文字の文字数が範囲で指定されている場合には、前記マスクビットのうち前記範囲に含まれる文字数に対応するマスクビットに予めフラグを立てておくことを特徴とする付記2又は3に記載の入力文字列確認装置。
30 正規表現回路(入力文字列確認装置)
34a〜34c 文字チェック回路(文字判定回路)
38a〜38h 状態ビット(判定制御回路の一部)
40a〜40h マスクビット(判定制御回路の一部)
40i 転送マスクビット(判定制御回路の一部)
40j バイパスマスクビット(判定制御回路の一部)
42 照合確認回路(判断回路)

Claims (3)

  1. 特定の文字と、任意の文字の文字数との組み合わせで表される正規表現が入力文字列に含まれるか否かを確認する入力文字列確認装置であって、
    前記入力文字列に含まれる文字が順に入力され、当該入力された文字が予め定められた判定文字と一致するかを判定する複数の文字判定回路と、
    前記複数の文字判定回路の判定を有効にするか無効にするかを制御する判定制御回路と、
    前記複数の文字判定回路のうちの最後の文字判定回路が、入力された文字と前記判定文字とが一致すると判定した場合に、前記入力文字列に前記正規表現が含まれると判断する判断回路と、を備え、
    前記判定制御回路は、判定が有効な所定の文字判定回路において、入力された文字が判定文字と一致すると判定された後、前記正規表現において定められている任意の文字の文字数だけ文字が入力されるまでの間、前記所定の文字判定回路の次の文字判定回路の判定を無効にし、次に入力される文字の判定を有効にすることを特徴とする入力文字列確認装置。
  2. 前記判定制御回路は、
    前記所定の文字判定回路と前記次の文字判定回路との間に配列された複数のマスクビットと、該複数のマスクビットに対応して配列された前記マスクビットと同数の状態ビットとを有し、
    前記正規表現において定められている任意の文字の文字数に対応するマスクビットに予めフラグを立てておき、
    前記所定の文字判定回路において前記入力された文字が予め定められた特定の文字であったと判定されたときに状態ビットの先頭にフラグを立て、
    前記入力文字列に含まれる文字が入力される度に、前記状態ビットのフラグを後方に1つずつ遷移させ、
    フラグが立っている状態ビットとフラグが立っているマスクビットとの位置が一致した場合に、次に入力される文字の前記次の文字判定回路における判定を有効にすることを特徴とする請求項1に記載の入力文字列確認装置。
  3. 前記正規表現において、前記任意の文字の文字数が範囲で指定されている場合には、前記マスクビットのうち前記範囲に含まれる文字数に対応するマスクビットに予めフラグを立てておくことを特徴とする請求項2に記載の入力文字列確認装置。
JP2012121091A 2012-05-28 2012-05-28 入力文字列確認装置 Expired - Fee Related JP5942600B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012121091A JP5942600B2 (ja) 2012-05-28 2012-05-28 入力文字列確認装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012121091A JP5942600B2 (ja) 2012-05-28 2012-05-28 入力文字列確認装置

Publications (2)

Publication Number Publication Date
JP2013246720A true JP2013246720A (ja) 2013-12-09
JP5942600B2 JP5942600B2 (ja) 2016-06-29

Family

ID=49846412

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012121091A Expired - Fee Related JP5942600B2 (ja) 2012-05-28 2012-05-28 入力文字列確認装置

Country Status (1)

Country Link
JP (1) JP5942600B2 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010018710A1 (ja) * 2008-08-13 2010-02-18 日本電気株式会社 有限オートマトン生成装置、パターンマッチング装置、有限オートマトン回路生成方法およびプログラム
WO2010107114A1 (ja) * 2009-03-19 2010-09-23 日本電気株式会社 パターンマッチング装置
US7924590B1 (en) * 2009-08-10 2011-04-12 Netlogic Microsystems, Inc. Compiling regular expressions for programmable content addressable memory devices
JP2011096075A (ja) * 2009-10-30 2011-05-12 Nec Corp Nfa回路

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010018710A1 (ja) * 2008-08-13 2010-02-18 日本電気株式会社 有限オートマトン生成装置、パターンマッチング装置、有限オートマトン回路生成方法およびプログラム
WO2010107114A1 (ja) * 2009-03-19 2010-09-23 日本電気株式会社 パターンマッチング装置
US7924590B1 (en) * 2009-08-10 2011-04-12 Netlogic Microsystems, Inc. Compiling regular expressions for programmable content addressable memory devices
JP2011096075A (ja) * 2009-10-30 2011-05-12 Nec Corp Nfa回路

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6016005998; 菊地 芳秀: '全文検索の技術動向とシステム事例' 情報処理学会研究報告 Vol.92 No.32, 19920512, 1-8ページ, 社団法人情報処理学会 *

Also Published As

Publication number Publication date
JP5942600B2 (ja) 2016-06-29

Similar Documents

Publication Publication Date Title
JP5939305B2 (ja) 情報処理装置,並列計算機システム及び情報処理装置の制御方法
EP2460086B1 (en) Device identifier selection
US8090883B2 (en) Method, system and computer program product for enhanced shared store buffer management scheme with limited resources for optimized performance
CN107645487B (zh) 报头处理设备、处理器和装置
US10581849B2 (en) Data packet transmission method, data packet authentication method, and server thereof
US9760322B2 (en) Communication system and image forming apparatus
KR20170034424A (ko) 컴퓨터 시스템에서의 메모리 쓰기 관리
JP2019080234A (ja) 電子制御装置、通信管理方法、及びプログラム
RU2708031C1 (ru) Способ отправки передаваемых данных от передающего устройства к приемному устройству для обработки передаваемых данных, а также средство для осуществления способа
JP5942600B2 (ja) 入力文字列確認装置
JP6524905B2 (ja) 電子制御装置
US10318453B2 (en) Systems and methods for transmitting interrupts between nodes
US11176076B2 (en) Value document handling apparatus having a data communication system and method for distributing sensor data in a value document handling apparatus
JP2011071638A (ja) 車載通信システム
JP5815661B2 (ja) 複数のcpuと通信するioユニットを用いた安全通信システム
CN111416887A (zh) 地址检测的方法、装置、交换机及存储介质
CN107291641A (zh) 用于具有工作存储器的至少一个计算单元的存储器直接访问控制装置
CN107040523B (zh) 交易数据传输方法、装置和电子设备
JP2010033188A (ja) 送信経路選択装置、データ送信システム、コンピュータ装置および送信経路選択方法
EP3631640B1 (en) Communication between field programmable gate arrays
US11093435B2 (en) Efficient establishment on RDMA peer-to-peer connections
US10796040B2 (en) Integrated circuit design and fabrication
US10032119B1 (en) Ordering system that employs chained ticket release bitmap block functions
JP2019191956A (ja) 電子機器、id情報の設定方法、ホストデバイスおよび制御プログラム
US20160139860A1 (en) Communication system, image forming apparatus and communication method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150319

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160223

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160405

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160426

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160509

R150 Certificate of patent or registration of utility model

Ref document number: 5942600

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees