JP2013525892A - ラージ・スケール正規表現のマッチングのための二重dfa分解 - Google Patents

ラージ・スケール正規表現のマッチングのための二重dfa分解 Download PDF

Info

Publication number
JP2013525892A
JP2013525892A JP2013505370A JP2013505370A JP2013525892A JP 2013525892 A JP2013525892 A JP 2013525892A JP 2013505370 A JP2013505370 A JP 2013505370A JP 2013505370 A JP2013505370 A JP 2013505370A JP 2013525892 A JP2013525892 A JP 2013525892A
Authority
JP
Japan
Prior art keywords
regular expression
state machine
expression set
input string
state
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
JP2013505370A
Other languages
English (en)
Other versions
JP5579922B2 (ja
Inventor
パセット、ダビデ
ペトリーニ、ファブリツィオ
アガーウォル、ビラト
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2013525892A publication Critical patent/JP2013525892A/ja
Application granted granted Critical
Publication of JP5579922B2 publication Critical patent/JP5579922B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • G06F40/289Phrasal analysis, e.g. finite state techniques or chunking

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)
  • Machine Translation (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】効率的なDFAアプローチを提供する。
【解決手段】装置は、第一入力ストリングを第一正規表現セットとマッチングさせるためのデータ処理システムを含む。データ処理システムは、プロセッサと、コンピュータ・プログラムを格納するメモリと、該コンピュータ・プログラムを実行するよう構成されたプロセッサとを含む。このコンピュータ・プログラムは、第一正規表現セットの少なくとも2つの関係する記号を1つの一意的記号にマップするステップと、第一入力ストリング中の該少なくとも2つの関係する記号の各インスタンスを該一意的記号に置き換えることによって第二入力ストリングを生成するステップと、入力ストリング上の第一状態マシンおよび第二入力ストリング上の第二状態マシンを作動して、第一入力ストリングが第一正規表現セットとマッチするかどうかを判定するステップと、を遂行するための命令を含む。
【選択図】図1

Description

本開示は正規表現の処理に関する。具体的には、本開示は入力ストリングを正規表現にマッチングさせるための装置および方法に関する。
正規表現セットのマッチングは、ある正規表現に対しマッチングする、所与の入力ストリングのサブストリングの全ての存在を検索するために用いられる。キーワード・マッチングまたはキーワード・スキャニングとしても知られる厳密なセット・マッチングは、ウイルス・スキャニングおよび侵入検出など多くのアプリケーションに幅広く使われている。しかしながら、キーワード・ベースのアプローチでは静的キーワードの定義だけが可能である。
侵入検出ソフトウェアおよびウイルス・スキャナは、正規表現(regex:regular expression)を用いてより精度のある情報を捕捉し、ディープ・パケット・スキャニングを遂行することができる。正規表現は、マッチングする入力ストリングの検索に使われるパターンを定義する記号(例えば、文字符号、文字、および数字)のストリングである。正規表現および入力ストリングに使われる記号は、regexのアルファベットとして知られる一組の記号から引用される。
ディープ・パケット・インスペクションは、インターネット・データ・マイニング、盗聴、および検閲はもとより、高度なセキュリティ機能を可能にする。ネットワーク速度の増大と、ウイルス、悪意あるソフトウェア(マルウエア)、およびネットワーク攻撃などのネットワーク脅威の増大との組み合わせに起因して、ディープ・パケット・インスペクションを遂行するアプリケーションを必要とする処理が増えている。正規表現を使って、パターンのファミリ群を表現することができる。入力データを正規表現のセットにマッチングさせるのは非常に複雑な作業となり得、正規表現中に実装されたフィーチャに大きく依存する。いくつかの異なるフォーマリズム技法が利用可能で、各々「簡略化構文(simpler syntax)」フィーチャにより構築され、それにさらなるフィーチャが加えられている。
いくつかのプログラム言語(例えば、perl)は、プログラマがテキスト解析を処理する際の作業を軽減するため、正規表現へのサポートを直接提供している。拡張文脈自由文法(すなわち、正規表現を使った文脈自由文法)を、高度なパーサ・ジェネレータ中に使用することができる。アンチウイルス・ソフトウェアは、正規表現を使ってファイルおよびデータ中のウイルスのシグネチャに対するスキャンをすることができる。ゲノム研究者らは、自己のデータ中のデオキシリボ核酸(DNA:Deoxyribonucleic acid)塩基のシーケンスおよびパターンをマッチさせる必要がある。非常に基本的なパターンは、キーワードを使って検索できるが、より高度なパターンは、より多様なパターンを表現可能な構成概念を必要とする。
一つのアプローチでは、表現のセットから決定性有限オートマトン(DFA:Deterministic Finite Automaton)または非決定性有限オートマトン(NFA:Non−Deterministic Finite Automaton)を構築し、これらの有限オートマトン(有限状態オートマトン、または状態マシンとしても知られる)の実行をシミュレートして正規表現を処理する。DFAは、各状態および対応する入力に対して後続状態への遷移が一つだけある状態マシンである。これに対し、NFAは、各状態および対応する入力に対して可能な後続状態への遷移がいくつもある状態マシンである。
DFAおよびNFAは、理論的には線形時間で実行が可能である。DFAアプローチにおける一つの主要な問題は、それが現在ある特定のパターンをマッチング中であることを記憶させる困難性にあり、完了状態の拡張を強いられ、しかして指数関数的なメモリ必要性が生じることである。DFAアプローチは、あらゆる可能なパターン・インスタンスに対するあらゆる可能な部分的マッチごとに別個の状態を用いなければならず、これにより指数関数的なメモリ必要性がもたらされる。別の主要な問題は、遷移または記号をカウントする困難性であり、あらゆる選択肢の完了に対する拡張を強いられ、これも指数関数的なメモリの必要性をもたらす。一部の従来技術は、追加メモリまたは履歴バッファと併せ、状態圧縮技法を用いている。ランタイムにおける検索処理は、それが状態を入力するたびにいくつかのオペレーションを遂行しなければならないことがある。すなわち、DFAが最終状態を入力したときに、ランタイムでマッチの検証のための試験を行わねばならないことがあり、この試験には単一命令多重データ(SIMD:Single Instruction,Multiple Data)命令を使うことはできるが、クリティカル・パスにいくつかの命令が加えられる。SIMD命令は、同時入力の複数データに対し正確に同一のオペレーションを適用する、中央処理ユニット(CPU:central processing unit)の命令である。
NFAアプローチは、入力文字符号ごとに複数回の状態トラバースが必要となり得、従って実行が非常に遅くなる可能性があり、大量の履歴メモリが必要となり得る。さらに、NFAアプローチは非決定性で、後戻り法を使ってこれをシミュレートするための指数関数的時間と、各遷移の後のあらゆる可能な出力を符号化するための指数関数的スペースとを招き得る。
しかして、上記の従来式アプローチは、非常に簡単な正規表現または小さなregexセットに対するものを除いては実行可能でない。
これらの困難を克服しマッチングの速度を得るために、何人かの研究者が、各々異なった方向からこの問題にアプローチした。
問題に取り組むための技法の例には、
・ DFAまたはNFAマッチング状態を圧縮するメカニズム、
・ DFAまたはNFAをシミュレートする際にビット・レベルの並列処理を使うメカニズム、
・ 簡略化フォーマリズムを使い状態の激増を制御するため、使用する演算子を減らすこと、
・ 状態の激増を制御するためマッチのセマンティクスの修正(例えば、最短のストリングだけのマッチング、またはクリーネ閉包内の表現のマッチングは除外する)、
・ 状態の激増を制御下に保つため、正規表現セットを異なるサブセットに区分化する(および複数の並列状態マシンを得る)こと、
・ より多くの情報をグラフ中に符号化しスペースの必要性を低減するためのDFAフォーマリズムの修正(例えば、遅延入力のDFA)、
・ DFAを「高速部分」と「低速部分」に区分し、高速部分は正規表現の開始部をマッチさせ、最終的には低速部分を起動させるようにすること(二分パターン・マッチングとしても知られる)、
・ DFAにマッチ履歴を追加し、DFAエッジ上の状態履歴の使用を可能にすること(履歴ベースのDFA(H−FA:History Based DFA))、および
・ 履歴ベースのDFAにカウンターを追加し、認識した記号の数に基づく状態履歴を可能にすること(履歴ベース・カウンティングDFA(H−cFA:History based Counting DFA))、
がある。
上記のとおり、前述の問題を解決することが当該技術分野で求められている。
第一態様から見ると、本発明は、請求項1による、データ処理システムにおいて第一入力ストリングを第一正規表現セットにマッチングするための装置を提供する。
望ましくは、本発明は、チェック・コンポーネントが複数の検証済み結果を提供するのに応じて、複数の検証済み結果を検証し、完全検証されたマッチを提供するための出力コンポーネントをさらに含む装置を提供する。
望ましくは、本発明は、第一アルファベットが複数の記号セットを含み、解析コンポーネントが、記号セットの各々を一つ以上のマップ済み記号にマッピングし、記号セットの各々をマッピングするのに応じて第二アルファベットを設定するようさらに作動し、第二アルファベットはマップ済み記号の各々を含む、装置を提供する。
望ましくは、本発明は装置を提供し、該装置は、第一正規表現セットを受信するための受信コンポーネントをさらに含み、受信コンポーネントが第一正規表現セットを受信するのに応じ、解析コンポーネントは第一正規表現セットを解析し第二アルファベットを設定するようさらに作動する。
望ましくは、本発明は、第一状態マシンおよび第二状態マシンの少なくとも一つが決定性である装置を提供する。
望ましくは、本発明は、第一状態マシンおよび第二状態マシンの少なくとも一つが少なくとも一つの無条件の最終状態をさらに含む装置を提供し、該装置は、該少なくとも一つの無条件の最終状態を評定するようさらに作動する比較コンポーネントと、該少なくとも一つの無条件の最終状態がアクティブであるのに応じて、検証済み結果を提供するためのチェック・コンポーネントと、をさらに含む。
さらなる態様から見ると、本発明は、請求項7による、データ処理システムにおいて第一入力ストリングを第一正規表現セットにマッチングさせる方法を提供する。
望ましくは、本発明は方法を提供し、該方法は、複数の検証済み結果を提供するのに応じて、該複数の検証済み結果を検証して完全検証されたマッチを提供するステップをさらに含む。
望ましくは、本発明は、第一アルファベットが複数の記号セットを含む方法を提供し、該方法は、記号セットの各々を一つ以上のマップ済み記号にマッピングするステップと、記号セットの各々をマッピングするのに応じて第二アルファベットを設定するステップとをさらに含み、第二アルファベットはマップ済み記号の各々を含む。
望ましくは、本発明は方法を提供し、該方法は、第一正規表現セットを受信するステップと、第一正規表現セットを受信するのに応じて第一正規表現セットを解析し第二アルファベットを設定するステップとをさらに含む。
望ましくは、本発明は、第一状態マシンおよび第二状態マシンの少なくとも一つが決定性である方法を提供する。
望ましくは、本発明は、第一状態マシンおよび第二状態マシンの少なくとも一つが少なくとも一つの無条件の最終状態をさらに含む方法を提供し、該方法は、該少なくとも一つの無条件の最終状態を評定するステップと、少なくとも一つの無条件の最終状態がアクティブであるのに応じて、検証済み結果を提供するステップとをさらに含む。
さらなる態様から見ると、本発明は、データ処理システムにおいて第一入力ストリングを第一正規表現セットにマッチングするためのコンピュータ・プログラム製品を提供し、第一正規表現セットは第一アルファベットからの記号を含み、データ処理システムはネットワークを含み、コンピュータ・プログラム製品は、処理回路に可読で、該処理回路が本発明のステップを履行する方法を実施するため実行する命令を格納する、コンピュータ可読記憶媒体を含む。
さらなる態様から見ると、本発明は、コンピュータ可読媒体に格納され、デジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラムであって、前記プログラムがコンピュータ上で実行されたとき本発明のステップを遂行するためのソフトウェア・コード部分を含む、コンピュータ・プログラムを提供する。
さらなる態様から見ると、本発明は、第一入力ストリングを第一正規表現セットにマッチングするための装置を提供する。データ処理システムは、プロセッサと、コンピュータ・プログラムを格納するメモリと、該コンピュータ・プログラムを実行するよう構成されたプロセッサとを含む。該コンピュータ・プログラムは、第一正規表現セットの少なくとも2つの関係する記号を1つの一意的記号にマッピングするステップと、第一入力ストリング中の少なくとも2つの関係する記号の各インスタンスを1つの一意的記号で代替することによって第二入力ストリングを生成するステップと、入力ストリング上の第一状態マシンおよび第二入力ストリング上の第二状態マシンを作動し、第一入力ストリングが第一正規表現セットにマッチするかどうかを判定するステップと、を遂行するための命令を含む。
第一状態マシンは少なくとも一つの第一条件付き最終状態を含み得、第二状態マシンは少なくとも一つの第二条件付き最終状態を含み得て、各第一条件付き最終状態は少なくとも一つの第二最終状態に対応し得る。第一状態マシンがある条件付き最終状態であり、第二状態マシンが対応する条件付き最終状態であるとき、マッチを判定することができる。第一状態マシンおよび第二状態マシンの少なくとも一つは、少なくとも一つの無条件の最終状態をさらに含み得る。
上記装置には、ネットワークをさらに含めることができ、データ処理システムはネットワークを介して第一入力ストリングを受信する。第一状態マシンおよび第二状態マシンの少なくとも一つは決定性とすることができる。第一入力ストリングおよび第二入力ストリングは、それぞれ、第一状態マシンおよび第二状態マシンに並行して入力することができる。
第二状態マシンは、第一正規表現セット中の少なくとも2つの関係する記号の各インスタンスを一意的記号で代替することによって生成された第二表現セットから構築することができる。第一状態マシンは、第一表現セットの少なくとも一つの表現を書き換えて該少なくとも一つの表現の状態の数を減らすことによって生成された、第三表現から構築することができる。第一正規表現セット中のある正規表現が、閉包演算子、反復演算子、または任意演算子を含む場合、第一正規表現セットは、第一正規表現セットと等価であるがこれら演算子を除いた第三正規表現セットで置き換えることができる。
さらなる態様から見ると、本発明は、本発明の例示的な実施形態による、データ処理システムにおいて第一入力ストリングを第一正規表現セットにマッチングする方法を提供し、該方法は、第一正規表現セット中に表現されたオーバーラップのない記号セットの最小のセットを判定するステップと、該オーバーラップのない記号セットをそれぞれ新しい記号群にマッピングするステップと、第一正規表現セットを書き換え、状態マシンの複雑性の原因となるコンポーネントを除去することによって第二正規表現セットを生成するステップと、第一正規表現の表現中の記号セットを対応する新規記号で置き換えることによって第三正規表現セットを生成するステップと、第二正規表現セットから構築された第一状態マシンおよび第三正規表現セットから構築された第二状態マシンを使って、第一入力ストリングが第一正規表現とマッチするかどうかを判定するステップと、を含む。
最終状態は、条件付きまたは無条件のいずれかであり得る。オーバーラップのない記号セットの少なくとも一つは、少なくとも2つのアルファベット文字だけを含み得、またはオーバーラップのない記号セットの少なくとも一つは、少なくとも2つの数字だけを含見得る。第一入力ストリングは、ネットワークを介しデータ処理システムによって受信することができる。第一状態マシンおよび第二状態マシンの少なくとも一つは決定性とすることができる。第一入力ストリングおよび第二入力ストリングは、それぞれ並行して第一状態マシンおよび第二状態マシンに入力することができる。
第一入力ストリングが第一正規表現にマッチするかどうかを判定するステップには、第一入力ストリングの表現中の記号セットを対応する新規記号で置き換えて第二入力ストリングを生成するステップと、第一入力ストリング上の第一状態マシンを作動するステップと、第二入力ストリング上の第二状態マシンを作動するステップと、第一状態マシンおよび第二状態マシンの出力に基づいてマッチを判定するステップと、を含めることができる。
マッチを判定するステップには、第一状態マシンにより出力された状態が最終状態であり、第二状態マシンにより出力された状態が対応する最終状態であるとき、マッチを表示するステップを含めることができる。マッチを判定するステップには、第一または第二状態マシンにより出力された状態が初期状態であるとき、非マッチを判定するステップを含めることができる。
単なる例示として、添付の図面に図示された好適な実施形態を参照しながら、以降に本発明を説明する。
従来技術によるデータ処理システムを表すブロック図であり、このシステムに本発明の好適な実施形態を実装することができる。 従来技術による状態マシン・システムを表すブロック図である。 本発明の好適な実施形態による、入力ストリングを正規表現にマッチングさせるため遂行される、装置のオペレーション方法のステップを表す、ハイレベルの例示的な概略流れ図である。 本発明の好適な実施形態の実装が可能な装置を表すブロック図である。 装置の変換コンポーネントを表すブロック図である。 装置の検索コンポーネントを表すブロック図である。 本発明の好適な実施形態による、例示的な状態マシンのブロック図である。 本発明の実施形態による方法およびシステムを実装できるコンピュータ・システムの例を示す。
本明細書で説明するシステムおよび方法は、さまざまな形態のハードウェア、ソフトウェア、ファームウェア、特殊用途処理装置、またはこれらの組み合わせに実装可能なことを理解すべきである。具体的には、望ましくは、本発明の少なくとも一部は、一つ以上のコンピュータ可読媒体(すなわち、ハード・ディスク、磁気フレキシブル・ディスク、RAM、ROM、CD−ROMなど、プロセッサ、メモリ、および入力/出力インタフェースを有する汎用デジタル・コンピュータなどの適切なアーキテクチャを含む任意のデバイスまたはマシンによって実行可能なプログラム記憶デバイス)に有形に具現されたプログラム命令を含むアプリケーションとして実装される。添付の図面に示されたシステム構成コンポーネントおよびプロセス・ステップの一部は、望ましくはソフトウェアに実装されるので、システム・モジュール(または方法ステップのロジック・フロー)間の接続が、本発明をプログラムする仕方の如何によっては異なり得ることもさらに理解すべきである。本明細書の教示を受けて、当業者は、本発明のこれらのまたは類似の実装を考案することができよう。
当業者ならよく理解するであろうように、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現することができる。従って、本発明の態様は、全体がハードウェアの実施形態、全体がソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、あるいは、本明細書では全て概して「回路」、「モジュール」、または「システム」といわれることもある、ソフトウェアおよびハードウェア態様を組み合わせた実施形態の形を取ることができる。さらに、本発明の態様は、内部に具体化されたコンピュータ可読プログラム・コードを有する一つ以上のコンピュータ可読媒体(群)中に具現されたコンピュータ・プログラム製品の形を取ることもできる。
一つ以上のコンピュータ可読媒体(群)の任意の組み合わせを用いることができる。コンピュータ可読媒体はコンピュータ可読記憶媒体とすることができる。コンピュータ可読記憶媒体は、例えば、以下に限らないが、電子的、磁気的、光学的、電磁気的、赤外的な、または半導体の、システム、装置、もしくはデバイス、あるいはこれらの任意の適切な組み合わせとすることができる。コンピュータ可読記憶媒体のさらに具体的な例(非包括的リスト)には、一つ以上の配線を有する電気接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read−only memory)、消去可能プログラム可能読み取り専用メモリ(EPROM(erasable programmable read−only memory)またはフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD−ROM:compact disc read−only memory)、光記憶デバイス、磁気記憶デバイス、またはこれらの任意の適切な組み合わせが含まれよう。本文書の文脈において、コンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによってまたはこれらに関連させて使用するためのプログラムを、包含または格納できる任意の有形媒体とすることができる。コンピュータ可読媒体中に具現されたプログラム・コードは、以下に限らないが、無線、有線、光ファイバ・ケーブル、RFなど、またはこれらの任意の適した組み合わせを含め、任意の適切な媒体を用いて送信することができる。
本発明の態様のオペレーションを実行するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および、“C”プログラミング言語または類似のプログラミング言語などの従来式手続き型プログラミング言語を含め、一つ以上のプログラミング言語の任意の組み合せで記述することができる。このプログラム・コードは、スタンドアロン・ソフトウェア・パッケージとして、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で実行することも、部分的にユーザのコンピュータ上で且つ部分的に遠隔コンピュータ上で実行することも、または完全に遠隔コンピュータまたはサーバ上で実行することもできる。後者のシナリオでは、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:widearea network)を含む任意の種類のネットワークを介して、遠隔コンピュータをユーザのコンピュータに接続することができ、あるいは(例えばインターネット・サービス・プロバイダを使いインターネットを介し)外部のコンピュータへの接続を行うことができる。
本発明の実施形態による方法、装置(システム)およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照しながら、本発明の態様を以下に説明する。フローチャート図もしくはブロック図またはその両方の各ブロック、および、フローチャート図もしくはブロック図またはその両方中のブロックの組み合せは、コンピュータ・プログラム命令によって実行可能であることが理解されよう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、またはマシンを形成する他のプログラム可能データ処理装置のプロセッサに供給し、この命令がコンピュータまたは他のプログラム可能データ処理装置のプロセッサにより実行されて、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定された機能群/処理群を実施するための手段を生成するようにすることができる。
また、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに対し特定の形で機能するよう命令できるこれらのコンピュータ・プログラム命令は、コンピュータ可読媒体に格納され、そのコンピュータ可読媒体に格納された命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定された機能/処理を実施する命令群を包含する製造品を形成するようにすることができる。
さらに、コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードして、これらコンピュータ、他のプログラム可能装置、または他のデバイス上で一連のオペレーション・ステップを実行させてコンピュータに実装されるプロセスを生成し、これらコンピュータまたは他のプログラム可能装置で実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定された機能群/処理群を実装するためのプロセスを提供するようにすることもできる。
図中のフローチャートおよびブロック図は、本発明のさまざまな実施形態による、システム、方法、およびコンピュータ・プログラム製品の考えられる実装のアーキテクチャ、機能、およびオペレーションを例示している。この点に関し、フローチャートまたはブロック図中の各ブロックは、所定の論理機能(群)を実装するための一つ以上の実行可能命令を含む、モジュール、セグメント、またはコードの部分を表し得る。また、一部の別の実装においては、ブロック中に記載された機能が、図に記載された順序を外れて行われることがあり得ることにも留意すべきである。例えば、連続して示された2つのブロックが、実際にはほぼ同時に実行されることがあり、関与する機能によっては、時には、これらブロックが逆の順序で実行されることもあり得る。さらに、ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方中のブロックの組み合わせは、特定の機能または処理を実施する、特殊用途のハードウェア・ベースのシステム、または特殊用途のハードウェアとコンピュータ命令との組み合わせによって実装可能なことにも留意すべきである。
図1は、本発明の例示的な実施形態が実装可能なデータ処理システム100を表すブロック図である。データ処理システム100の一例はインターネットである。クライアント・アプリケーション130はデータ処理システム100上で動作可能であり、該システムは、ワークステーション120、サーバ150および152を含む。ワークステーション120とこれらサーバとはネットワーク114を介して接続可能であり、このネットワークには有線ネットワーク110を含めることができる。サーバ152はネーム・サーバ152とすることができ、これもネットワーク114に接続可能である。ネーム・サーバ152は、統一資源位置指定子(URL:uniform resource locator)をインターネット・プロトコル(IP:Internet Protocol)アドレスに変換する。
クライアント・アプリケーション130は、サーバ150で動作可能なサーバ・アプリケーション160からメッセージ140(例、eメール)を受信する。メッセージ140は、シグネチャとなるストリングを含むウイルスを包含することがある。クライアント・アプリケーション130は、メッセージ140を解析し、メッセージ140のストリングを既知のウイルス・シグネチャと比較する。この比較は、ストリングを、シグネチャを表す正規表現(regex)にマッチングさせることによって行うことができる。
図2は、例示的な状態マシン・システム200を表すブロック図である。状態マシン220は、正規表現(regex)「A[a−z]C」を表現する。このregexは文字「A」、その後に任意の小文字「a」−「z」、それに続く文字「C」を表す。状態マシン・システム200は、(例えば、ネットワーク114を介して受信した)入力ストリング205をこのregexと比較する。入力ストリング205は、状態マシン・システム200の入力コンポーネント210に、1記号ずつ入力される。状態マシン220は、4つの状態、すなわち、初期状態S−INIT−1、第二状態S−A、第三状態S−b、および第四状態S−FINALを含む。状態マシン220は、どの文字でも受け入れる。
最初は、状態マシン220は状態S−INIT−1にある。状態マシン220が状態S−INTI−1にあるとき、次の入力が「A」なら状態は状態S−Aに移行するが、次の入力が「A」以外であれば状態は状態S−INTI−1のままである。状態S−Aにおいて、次の入力が小文字なら状態は状態S−bに移行するが、次の入力が小文字以外であれば状態は状態S−INTI−1に逆行する。状態S−bにおいて、次の入力が「C」なら状態は状態S−FINALに移行するが、次の入力が「C」以外であれば状態は状態S−INTI−1に逆行する。状態の間の標識された矢印線は、標識に示された入力文字符号に対する状態間の遷移を表す。状態S−INIT−1への逆行する遷移は「不一致」と定義される。
出力コンポーネント230は、状態マシン220が最終状態S−FINALにあるかどうかをチェックする。例えば、「AbC」の入力ストリング205が状態マシン220に入力された後では、状態マシンは状態S−FINALになることになる。しかして、出力コンポーネント230は、「一致」結果235を出力して、マッチがあることを示す。また一方、「XYZ」の入力ストリング205が状態マシン220に入力された後では、状態マシンはS−INIT−1状態になることになる。しかして、出力コンポーネント230は「不一致」結果235を出力して、マッチがなかったことを示す。
別の例では、アルファベットに一桁の数字を入れて拡張されることもあろう。より複雑な正規表現は、任意のマッチング・ストリングを表すための閉包演算子を含む。例えば「*」の閉包演算子は、存在ゼロを最小として、先行する変数の任意の数の存在を表す。従って、「AC」、「AbC」「AbbC」の入力ストリング205は、全てregex「A[a−z]*C」にマッチする。プラスの閉包演算子「+」は、存在1を最小として、先行する変数の任意の数の存在を表す。従って、「AbC」「AbbC」の入力ストリング205は、全てregex「A[a−z]+C」にマッチするが、「AC」の入力ストリング205はマッチしない。しかしながら、[a−z]の文字セットは、特に「*」などの演算子が伴う場合、対応する状態マシンの複雑性を増大する。また、regexにはキーワードおよびアンカー演算子を含めることができる。キーワードは、例えば、「print」など、プログラミング言語に対し、全体としての意味を有する。
複数の正規表現は、正規表現のセットに組み合わせ、入力ストリングがそのセットを構成する正規表現のいずれにもマッチ可能になるようにできる。正規表現群には、ある範囲またはある限定された範囲の相異なる文字符号セットを含めことができる。例えば、テキストを解析するための表現には、通常、数字、小文字、大文字、句読記号などのセット、およびこれらのセットの組み合わせが使われる。
図3を、図4、図5、図6、およびと図7と併せて以下に説明する。図3は、本発明の例示的な実施形態による、入力ストリング440を正規表現セット405にマッチングさせるため遂行されるオペレーションの方法ステップを表す、例示的なハイレベルでの流れ図300である。この方法ステップは、装置408によって遂行することができる。入力ストリング440は、ネットワーク114を介し受信でき、またはローカル・メモリなどからロードすることができる。図4は、本発明の例示的な実施形態による装置408を表すブロック図400である。図5は、本発明の例示的な実施形態による、装置408の変換コンポーネント410を表すブロック図500である。図6は、本発明の例示的な実施形態による、装置408の検索コンポーネント450を表すブロック図600である。図7は、本発明の例示的な実施形態による状態マシンのブロック図700である。
図3は、論理フローチャート図として説明する。しかして、示された順序および表示されたステップは、本発明の方法の少なくとも一つの例示的な実施形態を表している。しかしながら、図解された方法の一つ以上のステップまたはその部分の機能、ロジックまたは効果と同等な、他のステップおよび方法を考案することもできる。さらに、用いられているフォーマットおよび記号は、本方法の論理的ステップを説明するため提示にされたものであり、本方法の範囲を限定するものでないことが理解される。
以下の例を用いて本発明の例示的な実施形態を説明する。この例において、初期正規表現セット405は、「Alpha[A−Z]*beta」の第一正規表現初期ストリング_1、および「GAMMA[0−9A−Z]+delta」の第二正規表現初期ストリング_2を含む。初期正規表現セット405は、第一アルファベットからの記号を含む。例えば、第一アルファベットは、小文字「a」〜「z」、大文字「A」〜「Z」、および数字「0」〜「9」を含み得る。この例をさらに説明すると、2つの他の入力ストリング440を想定し、これは「GAMMA2delTA」の第一初期ストリング_1と、「SALVE7delTA」の第二初期ストリング_2とを含む。
本方法はステップ301から開始される。ステップ305で、変換コンポーネント410の受信コンポーネント506が初期正規表現セット405を受信する。ステップ316で、解析コンポーネント515は、初期正規表現セット405中に使われている第一アルファベットの記号(例えば、「A」、「9」、「e」など)を調べ、初期正規表現セット405を解析して、初期正規表現セット405中に表現されているオーバーラップのない記号セットの最小セットを判定する。例えば、初期正規表現セット405中の全ての使用記号セットを分解し、各記号セットを他のあらゆる記号セットと交差させて、全ての可能な入力記号を表わせるオーバーラップのない記号セットを判定することによって解析が行われる。この例では、必要なオーバーラップのない記号セットは「a−z」、「A−Z」および「0−9」として識別される。
次いで、このオーバーラップのない記号セットは、3つの新しい記号[例、α、β、およびγ]にマップされ、「A−Z」がαにマップされ、「a−z」がβにマップされ、「0−9」がγにマップされる。記号セット・アルファベット「アルファベット_2」418が定義され、これは第一アルファベットの使用された記号セットを表す新規記号を含む。
ステップ318で、更新コンポーネント516が、初期正規表現セット405を2つの等価な正規表現、REGEX_2 517およびREGEX_3 518として書き換える。表現セットREGEX_2 517は、状態マシンの複雑性を生成するコンポーネント(例えば、閉包演算子「*」および「+」、任意演算子「?」、および反復演算子「{n;m}」)が除去された、第一アルファベットの記号を使った初期正規表現セット405を含む。任意演算子「?」は、サブ表現が任意であることを示し、反復演算子「{n;m}」は、サブ表現が最少「n」回、最多「m」回存在しなければならないことを規定する。どちらの数字も省略することができ、この場合「n」も「m」も制限のない状態にデフォルトされる。
従って、表現セットREGEX_2は、「Alpha」の第一正規表現、「beta」の第二正規表現、「GAMMA[0−9A−Z]の第三正規表現、および「delTA」の第四正規表現となる。表現セットREGEX_2 517は、マッチの対象の入力ストリング440の細部を表すキーワード、アンカー、および簡単な正規表現だけを含む。
表現セットREGEX_3 518は、アルファベット_2 418を使って書き換えられた初期正規表現セット405を含む。表現セットREGEX_3は、アルファベット_2 418によって定義されており、元の表現の全体的構造を表している、より長い、しかしそれでも簡単な表現を含む。アルファベット_2 418のサイズは非常に小さい。というのは、実際上の正規表現セットは、通常、多い少ないはあるが大文字、小文字、数字、句読記号など文字符号の同じ組み合わせを用いるからである。従って、表現セットREGEX_3 518は、「αββββα*ββββ」の第一正規表現、および「ααααα[γα]+βββαα」の第二正規表現となる。
ステップ320で、第一DFAコンパイラ520(DFA_1という)は、表現セットREGEX_2 517をコンパイルして、第一状態マシン655(DFA1という)を生成する。第一状態マシンDFA1は、簡単な正規表現およびキーワードに対してだけ作動することができる。第二DFAコンパイラ525(DFA_2という)は、表現セットREGEX_3 518をコンパイルして、第二状態マシン660(DFA2という)を生成する。第二状態マシンDFA2は、アルファベット_2 418に対してだけ作動することができる。入力ストリング440が正規表現セット405とマッチするためには、入力ストリング440は、正規表現セット405の全体的構造はもとより、そのキーワード、アンカー、および簡単な正規表現がマッチしなければならない。従って、第一状態マシンDFA1 655の中の状態は、個別の表現の細部を、それらが初期正規表現405の文脈内に現れる場合にだけ認識するような仕方で、第二状態マシンDFA2 660の中の状態と相関する。
図7は、例示的な、相関している第一および第二状態マシンDFA1 655およびDFA2 660を表す。状態S1はDFA1 655の初期状態を表す。状態S22はDFA2 660の初期状態を表す。DFA1 655の中の状態F5、F10、F15、およびF21は、第一条件付き最終状態を表す。DFA2 660の中の状態F28、F33、F39、F43、F47、F51、およびF57は、第二条件付き最終状態を表す。DFA1 655中の第一条件付き最終状態は、DFA2 660中の一つ以上の第二条件付き最終状態と相関している。例えば、第一条件付き最終状態F5は、第二条件付き最終状態F47、F51、およびF57と相関している。簡明化のため、初期状態と条件付き最終状態だけに番号を付してある。同様に簡明化のため、不一致の遷移を、1つだけ状態16と状態S1との間に示している。
条件付き最終状態は、状態のファイナリティが関連する状態マシン中のそれに対応するファイナリティに条件付けられているので「条件付き」といわれる。条件付き最終状態だけが、2つの状態マシンDFA1 655、DFA2 660に亘って相関付けられる。条件付き最終状態と対照的に、2つの状態マシンにおける無条件の最終状態の間に関係はない。図7には、無条件の最終状態は一切示されていない。
ステップ330において、検索コンポーネント450の入力コンポーネント634は、(例えば、ネットワーク114から)初期ストリング440を受信する。ステップ332で、変換コンポーネント635は、アルファベット_2 418を使って、初期ストリング440を第二ストリング「string_2」652に変換する。例えば、「GAMMA2delTA」の第一初期入力ストリング440は、「αααααγβββαα」に変換され、「SALVE7delTA」の第二初期入力ストリング440も「αααααγβββαα」に変換される。
ステップ334で、ストリング_2 652が、入力_2コンポーネント650を介して状態マシンDFA2 660に入力されるのと並行して、初期ストリング440が、入力1コンポーネント645を介して状態マシンDFA1 655に入力される。初期ストリング440およびストリング_2 652は、1記号ずつ全記号が入力されるまで入力される。マッチングに達した一切の条件付き最終状態は、チェック・コンポーネント665によって検証されてから記録される。
ステップ336で、検証された結果および到達した一切の他の最終状態(例えば、少なくとも別の実施形態において、状態マシンは無条件の最終状態を含み得よう)は、チェック・コンポーネント665によって、チェックされ照合される。結果は、出力コンポーネント465によって出力される。
初期ストリング_1 440の例を用いれば、「GAMMA2delTA」440および「αααααγβββαα」652の記号は、それぞれ並行してDFA1 655とDFA2 660とに1記号ずつ入力される。「GAMMA2」および「αααααγ」の記号が入力された後、それぞれ条件付き最終状態F21およびF28に到達し、検証された結果がもたらされ、最終チェック・コンポーネント665によってそれが記録される。引き続き、「delTA」および「βββαα」の記号が入力された後、条件付き最終状態F15およびF33に到達する。F21とF28との相関、およびF51とF33との相関の両方が取れたので、出力コンポーネント465によって「一致」結果が出力される。
また一方、初期ストリング_2 440の例を用いれば、「SALVE7delTA」440および「αααααγβββαα」652の記号は、それぞれ並行してDFA1 655とDFA2 660とに1記号ずつ入力される。「SALVE7」および「αααααγ」の記号が入力された後、それぞれ最終状態S1およびF28に達する。例えば、「SALVE7」の「S」は、状態S1後の第一状態のいずれにも対応しない。S1とF28とは相関する状態でなく、従って、最終チェック・コンポーネント665によって検証された結果は記録されない。引き続き、「delTA」および「βββαα」の記号が入力された後、条件付き最終状態F15およびF33に達する。F15とF33とは互いに相関するが、他方の検証済み結果が記録されていなかったので、従い、出力コンポーネント465によって「不一致」結果が出力される。ステップ345で、最終結果が出力コンポーネント465によって出力される。本方法はステップ399で終了する。
少なくとも一つの例示的実施形態において、状態マシン660および655は決定性有限状態オートマトン(DFA)である。少なくとも一つの別の例示的実施形態において、状態マシン660および655は非決定性有限状態オートマトン(NFA)、またはDFAとNFAとの組み合わせである。
少なくとも一つの例示的実施形態において、任意のDFA実装を、前述の分解方策のための下支えとして用いることができる。例えば、キーワード・グラフ決定性オートマトン、ハードウェアBFSM実装、あるいは従来式のDFAであっても使用が可能である。
本発明の少なくとも一つの例示的な実施形態において、初期正規表現セット405は、第一アルファベットとさらなる複数のアルファベット_2 418とを含む、2より多い状態マシン660、655に分解される。初期ストリング440は、アルファベット_2群418を使って変換されストリング_2群652が設けられた後、2より多い状態マシン660および655によって処理される。
別の例示的な実施形態において、初期正規表現セット405は、全体として解釈されるキーワードを含む。このキーワードは、文字符号の記号で構成されるものでなく、かかるキーワードは、記号マッピングを使って第二状態マシンに変換できないので、第一状態マシンDFA1 655に出現する。また一方、「[0−9][0−9][0−9]」など文字符号の記号だけで形成されているキーワードは、かかるキーワードは、そのキーワードがマップされた記号セットを用いて変換されてしまえば非常にコンパクトな形で表すことができるので、第二状態マシンDFA2 600に出現する。反面、第一状態マシンDFA1 655中への、文字符号の記号だけで形成されているキーワードの包含は、第一状態マシンDFA1 655中に状態爆発をもたらす。コンパクトな状態マシンが必要とするメモリ・リソースは、より多くの状態を有する状態マシンよりも少ない。キーワードは、状態マシンDFA1 655およびDFA2 660中に無条件の最終状態をもたらす。
少なくとも一つの例示的な実施形態において、記号セットは複数のマップ済み記号セットにマップされる。例えば、[A−Z]がαにマップされ、[a−z]がβにマップされる場合、[A−Za−z]はαβ上にマップされる。
前述した状態マシンの複雑性の除去には、正規表現セットの表現を、一つ以上の閉包演算子「*」、「+」、任意演算子「?」または反復演算子「{n;m}」を除外した等価な表現に書き換えるステップを含めることができる。プラスの閉包演算子「+」は閉包「*」演算子を使って書き換えることができる。例えば、正規表現<AB+C>は<ABB*C>として書き換えられる。任意演算子「?」は、「?」演算子の組み合わせ拡張によって書き換えた後、全ての冗長表現を削除することができる。さらに、反復演算子「{n;m}」は、正規表現を拡張し、全ての非制限反復を置き換えてその終端部に閉包演算子「*」を挿入することによって書き換えることができる。例えば、<AB{3;5}C>の正規表現は、<ABBBC ABBBBC ABBBBBC>に変換することができ、<AB{3;}C>の正規表現は<ABBBB*C>に変換することができる。
前述した方法および構成は、ハードウェア、フィールド・プログラマブル・ゲート・アレイ(FPGA:field−programmable gate array)、または特定用途向け集積回路(ASIC:application−specific integrated circuit)で、全面的にまたは部分的に遂行することができる。また一方、前述した方法および構成は、一つ以上のプロセッサ(図には示さず)で実行されるソフトウェアで、全面的にまたは部分的に遂行することができ、該ソフトウェアは、磁気または光記憶装置など、任意の適したデータ・キャリヤ(これも図には示さず)に担持される一つ以上のコンピュータ・プログラム・エレメントの形で提供することができる。
少なくとも一つの例示的な実施形態において、前述のメッセージ140はeメールのメッセージであり得る。しかしながら、本発明はこれに限定されるものでなく、他の種類のメッセージ(例えば、更新可能な配布先リストを有するメッセージなど)にも適用できる。
図8は、本発明の方法もしくはシステムまたはその両方を実装できるコンピュータ・システムの一例を示す。本開示のシステムおよび方法またはシステムおよび方法の部分は、例えば、メインフレーム、個人用コンピュータ(PC:personal computer)、ハンドヘルド・コンピュータ、サーバなどのコンピュータ・システムで実行されるソフトウェア・アプリケーションの形に実装することができる。例えば、図4の変換コンポーネント410および検索コンポーネント450、図5の解析コンポーネント515、更新コンポーネント516、第一DFA1コンパイラ520、およびDFA2コンパイラ525、図6の入力変換コンポーネント635、第一状態マシン655、第二状態マシン660、およびチェック・コンポーネント665は、図4〜6の対応する態様を参照して前述した方法を遂行するソフトウェア・アプリケーション(群)として実装することができる。このソフトウェア・アプリケーションは、コンピュータ・システムによってローカルにアクセス可能な、および、例えばローカル・エリア・ネットワークまたはインターネットなどネットワークへの有線または無線接続によってアクセス可能な、(ハード・ディスク・ドライブ記憶装置1008などの)コンピュータ可読媒体に格納することができる。
一般的にシステムというコンピュータ・システム1000には、例えば、中央処理装置(CPU)1001、ランダム・アクセス・メモリ(RAM)1004、プリンタ・インタフェース1010、ディスプレイ装置1011、ローカル・エリア・ネットワーク(LAN)データ送信コントローラ1005、LANインタフェース1006、ネットワーク・コントローラ1003、内部バス1002、および、例えばキーボード、マウスなど一つ以上の入力デバイス1009を含めることができる。図示のように、システム1000は、リンク1007を介して、例えばハード・ディスク1008などのデータ記憶デバイスに接続できる。CPU1001は、図3〜7を参照して上記で説明した方法のステップを遂行するコンピュータ・プロセッサとすることができる。
入力ストリングは、LANインタフェース1006を介して受信することができ、本発明の実施形態によって判定されたマッチングの結果は、コンピュータ・システムから、例えばLANインタフェース1006を介して、またはプリンタ・インタフェース1010を介して出力し、あるいはディスプレイ装置1011に出力することができる。
上記で開示した例示的な実施形態は単に説明のためのものであり、本発明は、本明細書の教示の助力を得れば当業者には明らかな、異なっているが同等なやり方に修改して実施できることを理解するべきである。従って、本明細書で開示した例示的な実施形態の変更または修改が可能なことは明らかであり、かかる変形は本発明の範囲および精神内にあると見なされる。
疑念を避けるために、本明細書の説明および請求項を通して使われている用語「含む(comprising)は「だけから成る(consisting only of)」の意味に解釈しないものとする。

Claims (38)

  1. データ処理システムにおいて第一入力ストリングを第一正規表現セットにマッチングするための装置であって、前記第一正規表現セットは第一アルファベットからの記号を含み、前記データ処理システムはネットワークを含み、前記装置は、
    前記第一正規表現セットから第二アルファベットを設定するための解析コンポーネントと、
    前記解析コンポーネントが前記第二アルファベットを設定するのに応じて、第二正規表現セットおよび第三正規表現セットを設定するための更新コンポーネントであって、前記第二正規表現セットは前記第一アルファベットからの記号を含み、前記第三正規表現セットは前記第二アルファベットからの記号を含む、前記更新コンポーネントと、
    前記更新コンポーネントが前記第二正規表現セットおよび前記第三正規表現セットを設定するのに応じて、前記第二正規表現セットを第一状態マシンにコンパイルし、前記第三正規表現セットを第二状態マシンにコンパイルするためのコンパイラ・コンポーネントであって、前記第一状態マシンは少なくとも一つの第一条件付き最終状態を含み、前記第二状態マシンは少なくとも一つの第二条件付き最終状態を含み、各第一条件付き最終状態は少なくとも一つの第二条件付き最終状態に対応している、前記コンパイラ・コンポーネントと、
    前記ネットワークから前記第一入力ストリングを受信するための入力コンポーネントであって、前記第一入力ストリングは前記第一アルファベットからの記号を含む、前記入力コンポーネントと、
    前記入力コンポーネントが前記第一入力ストリングを受信するのに応じて、前記第一入力ストリングを第二入力ストリングに変換するための変換コンポーネントであって、前記第二入力ストリングは前記第二アルファベットからの記号を含む、前記変換コンポーネントと、
    前記変換コンポーネントが前記第一入力ストリングを変換するのに応じて、前記第一入力ストリングを前記第一状態マシン中に、前記第二入力ストリングを前記第二状態マシン中に、相並行して入力するためのマシン・コンポーネントと、
    前記マシン・コンポーネントが前記第一および第二入力ストリングを入力するのに応じて、前記第一条件付き最終状態を前記対応する第二条件付き最終状態と比較するための比較コンポーネントと、
    前記第一条件付き最終状態と前記対応する第二条件付き最終状態とがマッチングするのに応じ、検証済み結果を提供するためのチェック・コンポーネントと、
    を含む装置。
  2. 前記装置は、前記チェック・コンポーネントが複数の検証済み結果を提供するのに応じて、前記複数の検証済み結果を検証して、完全検証されたマッチを提供するための出力コンポーネントをさらに含む、請求項1に記載の装置。
  3. 前記第一アルファベットは複数の記号セットを含み、前記解析コンポーネントは、
    前記記号セットの各々を一つ以上のマップ済み記号にマッピングし、
    前記記号セットの各々をマッピングするのに応じて、前記第二アルファベットを設定する、
    ようさらに作動し、前記第二アルファベットは前記マップ済み記号の各々を含む、先行の請求項のいずれかに記載の装置。
  4. 前記装置は、
    前記第一正規表現セットを受信するための受信コンポーネントをさらに含み、
    前記受信コンポーネントが前記第一正規表現セットを受信するのに応じて、前記解析コンポーネントは、前記第一正規表現セットを解析して前記第二アルファベットを設定するようさらに作動する、
    先行の請求項のいずれかに記載の装置。
  5. 前記第一状態マシンおよび前記第二状態マシンの少なくとも一つは決定性である、先行の請求項のいずれかに記載の装置。
  6. 前記第一状態マシンおよび前記第二状態マシンの少なくとも一つは、少なくとも一つの無条件の最終状態を含み、前記装置は、
    前記少なくとも一つの無条件の最終状態を評定するようさらに作動する、前記比較コンポーネントと、
    前記少なくとも一つの無条件の最終状態がアクティブであるのに応じ、検証済み結果を提供するための、前記チェック・コンポーネントと、
    をさらに含む、先行の請求項のいずれかに記載の装置。
  7. データ処理システムにおいて第一入力ストリングを第一正規表現セットにマッチングさせる方法であって、前記第一正規表現セットは第一アルファベットからの記号を含み、前記データ処理システムはネットワークを含み、前記方法は、
    前記第一正規表現セットから第二アルファベットを設定するステップと、
    前記第二アルファベットを設定するのに応じて、第二正規表現セットおよび第三正規表現セットを設定するステップであって、前記第二正規表現セットは前記第一アルファベットからの記号を含み、前記第三正規表現セットは前記第二アルファベットからの記号を含む、前記設定するステップと、
    前記第二正規表現セットおよび前記第三正規表現セットを設定するのに応じて、前記第二正規表現セットを第一状態マシンにコンパイルし、前記第三正規表現セットを第二状態マシンにコンパイルするステップあって、前記第一状態マシンは少なくとも一つの第一条件付き最終状態を含み、前記第二状態マシンは少なくとも一つの第二条件付き最終状態を含み、各第一条件付き最終状態は少なくとも一つの第二条件付き最終状態に対応している、前記コンパイルするステップと、
    前記ネットワークから前記第一入力ストリングを受信するステップであって、前記第一入力ストリングは前記第一アルファベットからの記号を含む、前記受信するステップと、
    前記第一入力ストリングを受信するのに応じて、前記第一入力ストリングを第二入力ストリングに変換するステップであって、前記第二入力ストリングは前記第二アルファベットからの記号を含む、前記変換するステップと、
    前記第一入力ストリングを変換するのに応じて、前記第一入力ストリングを前記第一状態マシン中に、前記第二入力ストリングを前記第二状態マシン中に、相並行して入力するステップと、
    前記第一および第二入力ストリングを入力するのに応じ、前記第一条件付き最終状態を前記対応する第二条件付き最終状態と比較するステップと、
    前記第一条件付き最終状態と前記対応する第二条件付き最終状態とがマッチングするのに応じて、検証済み結果を提供するステップと、
    を含む、方法。
  8. 前記方法は、複数の検証済み結果を提供するのに応じて、前記複数の検証済み結果を検証して、完全検証されたマッチを提供するステップをさらに含む、請求項7に記載の方法。
  9. 前記第一アルファベットは複数の記号セットを含み、前記方法は、
    前記記号セットの各々を一つ以上のマップ済み記号にマッピングするステップと、
    前記記号セットの各々をマッピングするのに応じ、前記第二アルファベットを設定するステップと、
    をさらに含み、前記第二アルファベットは前記マップ済み記号の各々を含む、先行の請求項7または8のいずれかに記載の方法。
  10. 前記方法は、
    前記第一正規表現セットを受信するステップと、
    前記第一正規表現セットを受信するのに応じて、前記第一正規表現セットを解析して前記第二アルファベットを設定するステップと、
    をさらに含む、請求項7〜9のいずれかに記載の方法。
  11. 前記第一状態マシンおよび前記第二状態マシンの少なくとも一つは決定性である、請求項7〜10のいずれかに記載の方法。
  12. 前記第一状態マシンおよび前記第二状態マシンの少なくとも一つは、少なくとも一つの無条件の最終状態を含み、前記方法は、
    前記少なくとも一つの無条件の最終状態を評定するステップと、
    前記少なくとも一つの無条件の最終状態がアクティブであるのに応じ、検証済み結果を提供するステップと、
    をさらに含む、請求項7〜11のいずれかに記載の方法。
  13. データ処理システムにおいて第一入力ストリングを第一正規表現セットにマッチングするためのコンピュータ・プログラム製品であって、前記第一正規表現セットは第一アルファベットからの記号を含み、前記データ処理システムはネットワークを含み、前記コンピュータ・プログラム製品は、
    処理回路に可読で、請求項7〜12のいずれかに記載の方法を遂行するため前記処理回路による実行のための命令を格納している、コンピュータ可読記憶媒体を
    含む、コンピュータ・プログラム製品。
  14. コンピュータ可読媒体に格納され、デジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラムであって、前記プログラムがコンピュータ上で実行されたとき、請求項7〜12のいずれかの前記方法を遂行するためのソフトウェア・コード部分を含む、コンピュータ・プログラム。
  15. 第一入力ストリングを第一正規表現セットにマッチングするためのデータ処理システムを含む装置であって、前記データ処理システムは、
    プロセッサと、
    コンピュータ・プログラムを格納するメモリと、
    前記コンピュータ・プログラムを実行するよう構成されたプロセッサと、
    を含み、前記コンピュータ・プログラムは、
    前記第一正規表現セットの少なくとも2つの関係する記号を1つの一意的記号にマッピングするステップと、
    前記第一入力ストリング中の前記少なくとも2つの関係する記号の各インスタンスを前記一意的記号で置き換えることによって第二入力ストリングを生成するステップと、
    前記入力ストリング上の第一状態マシンおよび前記第二入力ストリング上の第二状態マシンを作動し、前記第一入力ストリングが前記第一正規表現セットとマッチするかどうかを判定するステップと、
    を遂行するための命令を含む、装置。
  16. 前記第一状態マシンは少なくとも一つの第一条件付き最終状態を含み、前記第二状態マシンは少なくとも一つの第二条件付き最終状態を含み、各第一条件付き最終状態は少なくとも一つの第二条件付き最終状態に対応している、請求項15に記載の装置。
  17. 前記第一状態マシンがある条件付き最終状態にあり、前記第二状態マシンが対応する条件付き最終状態にあるときマッチとして判定される、請求項16に記載の装置。
  18. 前記第一状態マシンおよび前記第二状態マシンの少なくとも一つは、少なくとも一つの無条件の最終状態をさらに含む、請求項17に記載の装置。
  19. ネットワークをさらに含み、前記データ処理システムは前記ネットワークを介して前記第一入力ストリングを受信する、請求項15〜18のいずれかに記載の装置。
  20. 前記第一状態マシンおよび前記第二状態マシンの少なくとも一つは決定性である、請求項15〜19のいずれかに記載の装置。
  21. 前記第一入力ストリングおよび前記第二入力ストリングは、並行してそれぞれ前記第一状態マシンおよび第二状態マシンに入力される、請求項15〜20いずれかに記載の装置。
  22. 前記第二状態マシンは、前記第一正規表現セット中の前記少なくとも2つの関係する記号の各インスタンスを前記一意的記号で置き換えることによって生成された第二表現セットから構築される、請求項15〜21のいずれかに記載の装置。
  23. 前記第一状態マシンは、前記第一表現セットの少なくとも一つの表現を書き換えて、前記少なくとも一つの表現の状態の複雑性を低減することによって生成された第三表現セットから構築される、請求項22に記載の装置。
  24. 前記第一正規表現セットの正規表現が、閉包演算子、反復演算子、または任意演算子を含む場合、前記第一正規表現セットは、前記第一正規表現セットと等価であるが前記演算子を除去した前記第三正規表現セットで置き換えられる、請求項23に記載の装置。
  25. データ処理システムにおいて第一入力ストリングを第一正規表現セットにマッチングする方法であって、前記方法は、
    前記データ処理システムによって、前記第一正規表現セット中に表現されたオーバーラップのない記号セットの最小セットを判定するステップと、
    前記データ処理システムによって、前記オーバーラップのない記号セットを新規記号群にそれぞれマッピングするステップと、
    前記データ処理システムによって、前記第一正規表現セットを書き換え、状態マシンの複雑性をもたらすコンポーネントを除去することにより、第二正規表現セットを生成するステップと、
    前記データ処理システムによって、前記第一正規表現セットの表現中の記号セットを前記対応する新規記号群で置き換えることにより、第三正規表現セットを生成するステップと、
    前記データ処理システムによって、前記第二正規表現セットから構築された第一状態マシンおよび前記第三正規表現セットから構築された第二状態マシンを用いて、前記第一入力ストリングが前記第一正規表現とマッチするかどうかを判定するステップと、
    を含む方法。
  26. 前記第一正規表現セットの正規表現が、閉包演算子、反復演算子、または任意演算子を含む場合、前記書き換えるステップは、前記第一正規表現セットを、前記第一正規表現セットと等価であるが前記演算子を除去した前記第三正規表現で置き換えるステップを含む、請求項25に記載の方法。
  27. 前記オーバーラップのない記号セットの少なくとも一つは、少なくとも2つのアルファベット文字だけを含む、請求項25または26のいずれかに記載の方法。
  28. 前記オーバーラップのない記号セットの少なくとも一つは、少なくとも2つの数字だけを含む、請求項25〜27のいずれかに記載の方法。
  29. 前記第一入力ストリングが前記第一正規表現とマッチするかどうかを前記判定するステップは、
    前記第一入力ストリングの表現中の記号セットを前記対応する新規記号で置き換えることによって第二入力ストリングを生成するステップと、
    前記第一入力ストリング上で前記第一状態マシンを作動するステップと、
    前記第二入力ストリング上で前記第二状態マシンを作動するステップと、
    前記第一状態マシンおよび前記第二状態マシンの出力に基づいてマッチを判定するステップと、
    を含む、請求項25〜28のいずれかに記載の方法。
  30. 前記マッチを判定するステップは、前記第一状態マシンにより出力された状態が最終状態で、前記第二状態マシンにより出力された状態が対応する最終状態であるとき、マッチを表示するステップを含む、請求項29に記載の方法。
  31. 前記マッチを判定するステップは、前記第一および第二状態マシンの一つにより出力された状態が初期状態のとき、非マッチを表示する、請求項29に記載の方法。
  32. 前記最終状態は条件付きかまたは無条件かのいずれかである、請求項30に記載の方法。
  33. 前記第一入力ストリングは、ネットワークを介し前記データ処理システムによって受信される、請求項25〜32のいずれかに記載の方法。
  34. 前記第一状態マシンおよび前記第二状態マシンの少なくとも一つは決定性である、請求項25〜33のいずれかに記載の方法。
  35. 前記第一入力ストリングおよび前記第二入力ストリングは、並行してそれぞれ前記第一状態マシンおよび第二状態マシンに入力される、請求項25〜34のいずれかに記載の方法。
  36. 第一入力ストリングを第一正規表現セットにマッチングさせるためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品は、
    内部に具現されたコンピュータ可読プログラム・コードを有するコンピュータ可読記憶媒体を含み、前記コンピュータ可読プログラム・コードは、
    前記第一正規表現セットの少なくとも2つの関係する記号を1つの一意的記号にマップし、前記第一入力ストリング中の前記少なくとも2つの関係する記号の各インスタンスを前記一意的記号で置き換えることによって第二入力ストリングを生成し、前記入力ストリング上の第一状態マシンおよび前記第二入力ストリング上の第二状態マシンを作動して、前記第一入力ストリングが前記第一正規表現セットとマッチするかどうかを判定するよう構成されたコンピュータ可読プログラム・コードを含む、
    コンピュータ・プログラム製品。
  37. 前記第一状態マシンは、前記第一正規表現セットを書き換えて、状態マシンの複雑性をもたらすコンポーネントを除去することによって生成された第二正規表現セットから構築され、前記第二状態マシンは、前記第一正規表現セットの表現中の前記少なくとも2つの関係する記号を前記一意的記号で置き換えることによって生成された第三正規表現セットから構築される、請求項36に記載のコンピュータ・プログラム製品。
  38. 前記第一状態マシンおよび前記第二状態マシンの少なくとも一つは決定性である、請求項37に記載のコンピュータ・プログラム製品。
JP2013505370A 2010-04-20 2011-02-16 ラージ・スケール正規表現のマッチングのための二重dfa分解 Active JP5579922B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/763,510 2010-04-20
US12/763,510 US9305116B2 (en) 2010-04-20 2010-04-20 Dual DFA decomposition for large scale regular expression matching
PCT/EP2011/052263 WO2011131384A1 (en) 2010-04-20 2011-02-16 A dual dfa decomposition for large scale regular expression matching

Publications (2)

Publication Number Publication Date
JP2013525892A true JP2013525892A (ja) 2013-06-20
JP5579922B2 JP5579922B2 (ja) 2014-08-27

Family

ID=44788997

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013505370A Active JP5579922B2 (ja) 2010-04-20 2011-02-16 ラージ・スケール正規表現のマッチングのための二重dfa分解

Country Status (5)

Country Link
US (1) US9305116B2 (ja)
EP (1) EP2561453B1 (ja)
JP (1) JP5579922B2 (ja)
CN (1) CN102844759B (ja)
WO (1) WO2011131384A1 (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101853301A (zh) * 2010-05-25 2010-10-06 华为技术有限公司 正则表达式匹配的方法和系统
JP5554304B2 (ja) * 2011-09-16 2014-07-23 株式会社東芝 オートマトン決定化方法、オートマトン決定化装置およびオートマトン決定化プログラム
WO2013137864A1 (en) 2012-03-13 2013-09-19 Hewlett-Packard Development Company, L.P. Submatch extraction
US9558299B2 (en) 2012-04-30 2017-01-31 Hewlett Packard Enterprise Development Lp Submatch extraction
US8725749B2 (en) 2012-07-24 2014-05-13 Hewlett-Packard Development Company, L.P. Matching regular expressions including word boundary symbols
US8793251B2 (en) 2012-07-31 2014-07-29 Hewlett-Packard Development Company, L.P. Input partitioning and minimization for automaton implementations of capturing group regular expressions
US9218372B2 (en) * 2012-08-02 2015-12-22 Sap Se System and method of record matching in a database
IN2015DN01932A (ja) * 2012-09-28 2015-08-07 Ericsson Telefon Ab L M
US9268881B2 (en) 2012-10-19 2016-02-23 Intel Corporation Child state pre-fetch in NFAs
US9117170B2 (en) 2012-11-19 2015-08-25 Intel Corporation Complex NFA state matching method that matches input symbols against character classes (CCLs), and compares sequence CCLs in parallel
US9665664B2 (en) * 2012-11-26 2017-05-30 Intel Corporation DFA-NFA hybrid
US9304768B2 (en) 2012-12-18 2016-04-05 Intel Corporation Cache prefetch for deterministic finite automaton instructions
US9268570B2 (en) 2013-01-23 2016-02-23 Intel Corporation DFA compression and execution
US9489215B2 (en) * 2013-08-01 2016-11-08 Dell Software Inc. Managing an expression-based DFA construction process
US10229104B2 (en) 2013-08-01 2019-03-12 Sonicwall Inc. Efficient DFA generation for non-matching characters and character classes in regular expressions
EP2909720A1 (en) * 2014-01-13 2015-08-26 Huawei Technologies Co., Ltd. Method for pattern processing
US10042654B2 (en) 2014-06-10 2018-08-07 International Business Machines Corporation Computer-based distribution of large sets of regular expressions to a fixed number of state machine engines for products and services
US10148547B2 (en) * 2014-10-24 2018-12-04 Tektronix, Inc. Hardware trigger generation from a declarative protocol description
CN105791045B (zh) * 2014-12-26 2019-04-02 中国科学院声学研究所 一种面向并行数据流的深度包检测方法及系统
US10157165B2 (en) * 2015-06-05 2018-12-18 Micron Technology, Inc. Methods and devices for reducing array size and complexity in automata processors
US9875045B2 (en) * 2015-07-27 2018-01-23 International Business Machines Corporation Regular expression matching with back-references using backtracking
CN106855842B (zh) * 2015-12-08 2020-12-29 中国航空工业第六一八研究所 一种基于正则表达式的程序静态分析方法
CN106933798B (zh) * 2015-12-31 2020-09-08 北京城市网邻信息技术有限公司 信息分析的方法及装置
CN107153635A (zh) * 2016-03-04 2017-09-12 《中国学术期刊(光盘版)》电子杂志社有限公司 一种自动提取论文引用内容及对应文后参考文献的方法和系统
CN107016091B (zh) * 2017-04-06 2019-10-15 北京邮电大学 一种软件定义网络中正则表达式更新方法及装置
CN111819558A (zh) * 2018-04-30 2020-10-23 慧与发展有限责任合伙企业 更新三元内容可寻址存储器中的正则表达式模式组
CN109408682B (zh) * 2018-10-30 2021-03-23 杭州安恒信息技术股份有限公司 一种正则表达式匹配的方法、系统及设备
CN110865970B (zh) * 2019-10-08 2021-06-29 西安交通大学 一种基于fpga平台的压缩流量模式匹配引擎及模式匹配方法
CN114168808A (zh) * 2021-11-22 2022-03-11 中核核电运行管理有限公司 基于正则表达式的文档字符串编码识别方法及装置
CN115587564B (zh) * 2022-10-17 2023-05-05 北京云枢创新软件技术有限公司 一种提取有限状态机中状态变化的方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10207912A (ja) * 1996-11-21 1998-08-07 Sharp Corp 文字,文字列検索方法及び該方法に用いる記録媒体
JP2000231557A (ja) * 1999-02-09 2000-08-22 Atr Interpreting Telecommunications Res Lab 言語特徴抽出装置
US20060085389A1 (en) * 2004-08-26 2006-04-20 Sensory Networks, Inc. Method for transformation of regular expressions
JP2009093391A (ja) * 2007-10-09 2009-04-30 Hitachi Ltd Webサーバ連携方法、Webサーバ連携プログラム、および、Webサーバ連携システム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2002220130A1 (en) 2001-09-12 2003-03-24 Raqia Networks, Inc. High speed data stream pattern recognition
US7689530B1 (en) * 2003-01-10 2010-03-30 Cisco Technology, Inc. DFA sequential matching of regular expression with divergent states
US7783997B1 (en) * 2004-07-30 2010-08-24 Synopsys, Inc. Large scale finite state machines
US8560475B2 (en) * 2004-09-10 2013-10-15 Cavium, Inc. Content search mechanism that uses a deterministic finite automata (DFA) graph, a DFA state machine, and a walker process
US7260558B1 (en) 2004-10-25 2007-08-21 Hi/Fn, Inc. Simultaneously searching for a plurality of patterns definable by complex expressions, and efficiently generating data for such searching
GB2422507A (en) * 2005-01-21 2006-07-26 3Com Corp An intrusion detection system using a plurality of finite state machines
US7499941B2 (en) 2005-09-05 2009-03-03 Cisco Technology, Inc. Pipeline regular expression matching
US7702629B2 (en) 2005-12-02 2010-04-20 Exegy Incorporated Method and device for high performance regular expression pattern matching
US7725510B2 (en) 2006-08-01 2010-05-25 Alcatel-Lucent Usa Inc. Method and system for multi-character multi-pattern pattern matching
CN101174261B (zh) 2006-11-03 2010-04-14 北京航空航天大学 基于扩展有限状态机的多正则表达式联合搜索方法
US8335757B2 (en) * 2009-01-26 2012-12-18 Microsoft Corporation Extracting patterns from sequential data

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10207912A (ja) * 1996-11-21 1998-08-07 Sharp Corp 文字,文字列検索方法及び該方法に用いる記録媒体
JP2000231557A (ja) * 1999-02-09 2000-08-22 Atr Interpreting Telecommunications Res Lab 言語特徴抽出装置
US20060085389A1 (en) * 2004-08-26 2006-04-20 Sensory Networks, Inc. Method for transformation of regular expressions
JP2009093391A (ja) * 2007-10-09 2009-04-30 Hitachi Ltd Webサーバ連携方法、Webサーバ連携プログラム、および、Webサーバ連携システム

Also Published As

Publication number Publication date
JP5579922B2 (ja) 2014-08-27
CN102844759B (zh) 2016-08-17
US20110258210A1 (en) 2011-10-20
CN102844759A (zh) 2012-12-26
EP2561453A1 (en) 2013-02-27
WO2011131384A1 (en) 2011-10-27
EP2561453B1 (en) 2013-12-25
US9305116B2 (en) 2016-04-05

Similar Documents

Publication Publication Date Title
JP5579922B2 (ja) ラージ・スケール正規表現のマッチングのための二重dfa分解
US10229104B2 (en) Efficient DFA generation for non-matching characters and character classes in regular expressions
US9990583B2 (en) Match engine for detection of multi-pattern rules
US20120221494A1 (en) Regular expression pattern matching using keyword graphs
US10242365B2 (en) Domain-specific hardwired eCommerce learning machine
WO2016114913A1 (en) Code labeling based on tokenized code samples
US8392467B1 (en) Directing searches on tree data structures
US20110153641A1 (en) System and method for regular expression matching with multi-strings and intervals
Heule et al. Expressing symmetry breaking in DRAT proofs
Nguyen et al. Toward a deep learning approach for detecting php webshell
CN102141959A (zh) 一种受上下文无关文法约束的测试用例生成方法
Regéciová et al. Pattern Matching in YARA: Improved Aho-Corasick Algorithm
WO2022100489A1 (en) System, method and apparatus for malicious software detection
JP6984761B2 (ja) 情報処理装置及び情報処理プログラム
US20100205411A1 (en) Handling complex regex patterns storage-efficiently using the local result processor
US9910889B2 (en) Rapid searching and matching of data to a dynamic set of signatures facilitating parallel processing and hardware acceleration
JP6750674B2 (ja) プログラム分析システム、プログラム分析方法、及び、コンピュータ・プログラム
Van Hung An approach to fast malware classification with machine learning technique
Soewito et al. Hybrid pattern matching for trusted intrusion detection
Chitrakar et al. CRBP-OpType: A constrained approximate search algorithm for detecting similar attack patterns
JP7424393B2 (ja) 推定システム、推定方法及び推定プログラム
WO2023162047A1 (ja) 生成装置、生成方法および生成プログラム
Van Litsenborgh An investigation into performance-related issues of regular expression matching
WO2022081122A1 (en) Indexing software packages and detecting malicious or potentially harmful code using api-call n-grams
Jha et al. Regular Expression Simulator: Regular Expression to String Generation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131111

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140516

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: 20140624

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140709

R150 Certificate of patent or registration of utility model

Ref document number: 5579922

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150