JP5865918B2 - 正規表現の分解およびマージ - Google Patents

正規表現の分解およびマージ Download PDF

Info

Publication number
JP5865918B2
JP5865918B2 JP2013544518A JP2013544518A JP5865918B2 JP 5865918 B2 JP5865918 B2 JP 5865918B2 JP 2013544518 A JP2013544518 A JP 2013544518A JP 2013544518 A JP2013544518 A JP 2013544518A JP 5865918 B2 JP5865918 B2 JP 5865918B2
Authority
JP
Japan
Prior art keywords
graph
node
keyword
regular expression
nodes
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.)
Expired - Fee Related
Application number
JP2013544518A
Other languages
English (en)
Other versions
JP2014503896A5 (ja
JP2014503896A (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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2014503896A publication Critical patent/JP2014503896A/ja
Publication of JP2014503896A5 publication Critical patent/JP2014503896A5/ja
Application granted granted Critical
Publication of JP5865918B2 publication Critical patent/JP5865918B2/ja
Expired - Fee Related 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/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Document Processing Apparatus (AREA)

Description

本発明は、正規表現に関する。
コンピュータ・システムおよびその関連技術は社会の多数の側面に影響を及ぼしている。実際、コンピュータ・システムの情報処理能力により、我々の生活の仕方や仕事の仕方は変化した。コンピュータ・システムは今や一般に、コンピュータ・システムが出現する以前は手動で行われていた大量のタスク(例えば、文書処理、スケジューリング、会計、等)を処理する。近年では、コンピュータ・システムは互いにおよび他の電子装置に接続され、有線および無線の両方のコンピュータ・ネットワークを形成している。これらのコンピュータ・ネットワークを介して、コンピュータ・システムおよび他の電子装置が電子データを送信することができる。ゆえに、多数のコンピューティング・タスクの実施は、幾つかの異なるコンピュータ・システムおよび/または幾つかの異なるコンピューティング環境に分散されている。
一部のコンピューティング環境では、例えば特定の文字、単語、または文字パターンのようなテキスト文字列にマッチするように正規表現が使用されている。正規表現を、正規表現プロセッサにより解釈できる形式言語で書くことができる。正規表現プロセッサは、構文解析器生成器の役割を果たすか、または、テキストを調べて与えられた仕様にマッチする部分を特定するプログラムである。
正規表現は、パターンに基づいてテキストを検索し操作するために、多数のテキスト・エディタ、ユーティリティ、およびプログラミング言語によって用いられる。例えば、アンチスパム・サービスは、正規表現を利用して、SPAMを示すとして知られているテキスト文字列が電子メッセージに含まれるかどうかを判定することができる。同様に、データ漏洩保護サービスは、正規表現を利用して、機密情報の不正な使用および送信を検出し防止することができる。
正規表現を利用する環境では、大規模な正規表現の集合が逐次的に実行されるのは珍しいことではない。例えば、アンチスパム・サービスは、電子メッセージがSPAMを含むかどうかを判定するときに、何万もの正規表現を使用することができる。1組の正規表現における正規表現を、受け取った電子メッセージそれぞれに対して逐次的に実行することができる。正規表現の逐次実行は、スケーラビリティを制限し、マッチのためにチェックされている正規表現および/またはテキスト部分の数が増大すると大量のリソースを消費する可能性がある。
本発明は、正規表現を分解しマージするための方法、システム、およびコンピュータ・プログラム製品に関する。1つまたは複数のキーワード・グラフにアクセスする。1つまたは複数のキーワード・グラフは第1の正規表現を分解したものである。1つまたは複数のキーワード・グラフの各々は、1つのルート・ノード、1つまたは複数の中間ノード、および1つの葉ノードを有する。1つまたは複数の中間ノードの各々および葉ノードが、第1の正規表現に部分的にマッチする文字パターンを特定する。ルート・ノードおよび1つまたは複数の中間ノードの各々は、単一の子ノードを有する。中間ノードの1つは、葉ノードを子ノードとして有する。各葉ノードは、第1の正規表現のマッチ状態(matching state)としてラベルが付される。
第2のグラフにアクセスする。第2のグラフは、第2の正規表現を表現する。第2のグラフは、1つのルート・ノード、1つまたは複数の中間ノード、および1つまたは複数の葉ノードを有する。1つまたは複数の中間ノードおよび1つまたは複数の葉ノードの各々が、第2の正規表現に部分的にマッチする文字パターンを特定する。第2のグラフは、第2の正規表現のマッチ状態としてラベルが付された1つまたは複数の終端ノードを有する。
1つまたは複数のキーワード・グラフおよび第2のグラフを、第1の正規表現および第2の正規表現の両方を集合的に表現する有向非循環グラフ(directed acyclic graph)にマージする。マージには、少なくとも部分的に重複する文字パターンを有する、1つまたは複数のキーワード・グラフおよび第2のグラフ内の任意の同様に配置された中間ノードを特定することを含む。部分的に重複する文字パターンを有する任意の特定された中間ノードに対して、少なくとも1つの特定された中間ノードの文字パターンを変更して、部分的に重複する文字パターンを排除する。キーワード・グラフと第2のグラフとの間にエッジを追加して、少なくとも1つの特定された中間ノードの文字パターンの変更に対して補償する。完全に重複する文字パターンを有する任意の特定された中間ノードに対して、キーワード・グラフ内の中間ノードおよび第2のグラフ内の中間ノードを、完全に重複する文字パターンを表現する単一のノードへと結合する。
本概要は、選択された概念を簡潔な形で導入するために提供されるものであり、当該概念は、下記の発明を実施するための形態でさらに説明される。本概要は、特許請求される主題の主要な特徴または本質的な特徴を特定しようとするものではなく、特許請求される主題の範囲を決定する際の助けとして使用されることを意図したものでもない。
本発明のさらなる特徴および利点は、下記の記載にて説明され、当該記載から部分的に明らかになろう。または、当該特徴および利点は、本発明を実践することにより理解されるであろう。本発明の特徴および利点は、添付の特許請求の範囲で特に指摘される手段および組合せにより実現され取得されうる。本発明のこれらおよび他の特徴は、下記の記載および添付の特許請求の範囲からより完全に理解されよう。または、本発明のこれらおよび他の特徴は、以降で説明する本発明を実践することにより理解されるであろう。
本発明の上述の、ならびに他の利点および特徴を取得可能な方法を説明するために、以上で簡潔に説明した本発明のより具体的な説明は、添付図面で示される本発明の具体的な実施形態を参照して示される。これらの図面は本発明の典型的な実施形態を示すにすぎず、したがって、本発明の範囲を限定するとは考えるべきではないことを理解されたく、本発明を、添付図面を用いてさらに具体的かつ詳細に記載および説明する。
正規表現の分解およびマージを容易にする例示的なコンピュータ・アーキテクチャの図である。 正規表現を表現するグラフを分解する例を示す図である。 異なる正規表現を表現するグラフをマージする例を示す図である。 正規表現を表現するグラフを分解する別の例を示す図である。 異なる正規表現を表現するグラフをマージする別の例を示す図である。 正規表現を分解しマージするための例示的な方法の流れ図である。 正規表現を分解しマージするための例示的な方法の流れ図である。
本発明は、正規表現を分解しマージするための方法、システム、およびコンピュータ・プログラム製品に関する。1つまたは複数のキーワード・グラフにアクセスする。1つまたは複数のキーワード・グラフは第1の正規表現を分解したものである。1つまたは複数のキーワード・グラフの各々は、1つのルート・ノード、1つまたは複数の中間ノード、および1つの葉ノードを有する。1つまたは複数の中間ノードの各々および葉ノードが、第1の正規表現に部分的にマッチする文字パターンを特定する。ルート・ノードおよび1つまたは複数の中間ノードの各々は、単一の子ノードを有する。中間ノードの1つは、葉ノードを子ノードとして有する。各葉ノードは、第1の正規表現のマッチ状態としてラベルが付される。
第2のグラフにアクセスする。第2のグラフは、第2の正規表現を表現する。第2のグラフは、1つのルート・ノード、1つまたは複数の中間ノード、および1つまたは複数の葉ノードを有する。1つまたは複数の中間ノードおよび1つまたは複数の葉ノードの各々が、第2の正規表現に部分的にマッチする文字パターンを特定する。第2のグラフは、第2の正規表現のマッチ状態としてラベルが付された1つまたは複数の終端ノードを有する。
1つまたは複数のキーワード・グラフおよび第2のグラフを、第1の正規表現および第2の正規表現の両方を集合的に表現する有向非循環グラフにマージする。マージには、少なくとも部分的に重複する文字パターンを有する、1つまたは複数のキーワード・グラフおよび第2のグラフ内の任意の同様に配置された中間ノードを特定することを含む。部分的に重複する文字パターンを有する任意の特定された中間ノードに対して、少なくとも1つの特定された中間ノードの文字パターンを変更して、部分的に重複する文字パターンを排除する。キーワード・グラフと第2のグラフとの間にエッジを追加して、少なくとも1つの特定された中間ノードの文字パターンの変更に対して補償する。完全に重複する文字パターンを有する任意の特定された中間ノードに対して、キーワード・グラフ内の中間ノードおよび第2のグラフ内の中間ノードを、完全に重複する文字パターンを表現する単一のノードへと結合する。
本発明の諸実施形態が、特殊目的または汎用目的のコンピュータを備えるかまたは利用してもよい。当該コンピュータには、下記でさらに詳細に論ずるように、例えば1つまたは複数のプロセッサおよびシステム・メモリのようなコンピュータ・ハードウェアが含まれる。本発明の範囲内の諸実施形態はまた、コンピュータ実行可能命令および/またはデータ構造を伝送または格納するための物理的なおよび他のコンピュータ読取可能媒体を備える。かかるコンピュータ読取可能媒体は、汎用目的または特殊目的のコンピュータ・システムがアクセスできる任意の利用可能な媒体であってよい。コンピュータ実行可能命令を格納するコンピュータ読取可能媒体は、コンピュータ記憶媒体(装置)である。コンピュータ実行可能命令を伝送するコンピュータ読取可能媒体は、送信媒体である。したがって、限定ではなく例として、本発明の諸実施形態は、少なくとも2つの明らかに相違なる種類のコンピュータ読取可能媒体、即ち、コンピュータ記憶媒体(装置)および送信媒体を備えることができる。
コンピュータ記憶媒体(装置)には、RAM、ROM、EEPROM、CD−ROMもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶装置、または、コンピュータ実行可能命令またはデータ構造の形で所望のプログラム・コード手段を格納するのに使用でき、汎用目的または特殊目的のコンピュータがアクセスできる他の任意の媒体が含まれる。
「ネットワーク」は、コンピュータ・システムおよび/またはモジュールおよび/または他の電子装置間で電子データの送信を可能とする1つまたは複数のデータ・リンクとして定義される。情報がネットワークまたは別の通信接続(ハードワイヤード、無線、またはハードワイヤードもしくは無線の組合せのいずれか)を介してコンピュータに転送または提供されるとき、当該コンピュータは当該接続を正しく送信媒体とみなす。送信媒体には、コンピュータ実行可能命令またはデータ構造の形で所望のプログラム・コード手段を伝送するのに使用でき汎用目的または特殊目的のコンピュータがアクセスできる、ネットワークおよび/またはデータ・リンクを含めることができる。上記を組み合わせたものも、コンピュータ読取可能媒体の範囲に含まれるべきである。
さらに、様々なコンピュータ・システムのコンポーネントに到達すると、コンピュータ実行可能命令またはデータ構造の形のプログラム・コード手段を送信媒体からコンピュータ記憶媒体(装置)に自動的に転送することができる(逆も可能)。例えば、ネットワークまたはデータ・リンクを介して受信したコンピュータ実行可能命令またはデータ構造を、ネットワーク・インタフェース・モジュール(例えば、「NIC」)内のRAMにバッファし、最終的にコンピュータ・システムのRAMおよび/またはコンピュータ・システムにある揮発性の低いコンピュータ記憶媒体(装置)に転送することができる。したがって、コンピュータ記憶媒体(装置)を、追加的に(または主に)送信媒体を利用するコンピュータ・システムのコンポーネントに含めることができることは理解されよう。
コンピュータ実行可能命令は、例えば、プロセッサで実行されたときに汎用目的のコンピュータ、特殊目的のコンピュータ、または特殊目的の処理装置に一定の機能または機能群を実行させる命令およびデータを備える。コンピュータ実行可能命令は、例えばバイナリ、アセンブリ言語のような中間形式の命令、または、ソース・コードであってもよい。本発明を構造的特徴および/または方法論的動作に固有な言葉で説明したが、添付の特許請求の範囲で定義した本発明は必ずしも説明した特徴または上述の動作に限定されないことは理解されよう。むしろ、説明した特徴および動作は諸請求項を実装する例示的な形態として開示されている。
本発明を多種類のコンピュータ・システム構成を有するネットワーク・コンピューティング環境で実践してもよいことは、当業者には理解されよう。当該構成には、パーソナル・コンピュータ、デスクトップ・コンピュータ、ラップトップ・コンピュータ、メッセージ・プロセッサ、ハンドヘルド装置、マルチプロセッサ・システム、マイクロプロセッサ・ベースのまたはプログラム可能な家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレーム・コンピュータ、携帯電話、PDA、ページャ、ルータ、スイッチ、等が含まれる。本発明を分散システム環境で実践してもよい。この場合、ローカルおよびリモートのコンピュータ・システムが、(ハードワイヤードのデータ・リンク、無線データ・リンクによって、またはハードワイヤードのデータ・リンクおよび無線データ・リンクの組合せによって)ネットワークを介して接続され、両方ともタスクを実施する。分散システム環境では、プログラム・モジュールをローカルおよびリモートの両方のメモリ記憶装置に配置してもよい。
本明細書および添付の特許請求の範囲においては、「正規表現」とは、例えば特定の文字、単語、または文字パターンのようなテキスト文字列にマッチするよう用いられる構造体である。幾つかの実施形態では、正規表現は有限のアルファベットを有する。正規表現は、正規表現プロセッサにより解釈できる形式言語で記述することができる。正規表現プロセッサは、構文解析器生成器としての役割を果たすか、または、テキストを調べて所与の正規表現にマッチするテキストの部分を特定する。
一般に、グラフを用いて正規表現およびそのマッチ状態を表現することができる。例えば、図2を簡単に参照すると、グラフ201が正規表現「(\d\d)|(a(b|c))」を表現している。同様に、図4を簡単に参照すると、グラフ401が正規表現「([a,b,c]x)|(\d(cd|[1,3,5]([a,c,d]|ea)))」を表現している。グラフを、入力テキストで状態機械を実行することにより「実行」することができ、これによりグラフの並列化が可能になる。
図1は、正規表現の分解およびマージを容易にする例示的なコンピュータ・アーキテクチャ100を示す。図1を参照すると、コンピュータ・アーキテクチャ100は、分解モジュール101、ラベリング・モジュール102、およびマージ・モジュール141を備える。図示したコンポーネントの各々を、例えばLAN(Local Area Network)、WAN(Wide Area Network)、およびインターネットのようなネットワーク(またはその一部)を介して互いに接続することができる。したがって、図示したコメントならびに他の任意の接続されたコンピュータ・システムおよびそのコンポーネントが、ネットワークを介してメッセージ関連データ(例えば、IP(Internet Protocol)データグラム、および、TCP(Transmission Control Protocol)、HTTP(Hypertext Transfer Protocol)、SMTP(Simple Mail Transfer Protocol)、等のような、IPデータグラムを利用する他の上位層プロトコル)を作成し交換することができる。
一般に、分解を用いて、正規表現を表現する1組の単純なグラフを、当該正規表現を表現するより複雑なグラフから生成することができる。したがって、分解モジュール101は、例えば正規表現を表現するグラフのようなグラフを、対応する複数のキーワード・グラフに分解するように構成される。分解モジュール101は、基本的には、より複雑な正規表現の選択的な部分(disjunctive portion)を除去して、当該より複雑な正規表現を複数のより単純な正規表現に分解することができる。各キーワード・グラフの葉ノードは、より複雑なグラフの最終状態(当該より複雑なグラフ内の中間ノードまたは葉ノードにおけるものであってもよい)を表現する。分解モジュール101は、ラベル付きグラフまたはラベルなしグラフを分解することができる。
ラベリング・モジュール102は、グラフまたはキーワード・グラフのノードにラベルを付して、表現された正規表現のマッチ状態を示すように構成される。ラベリング・モジュール102は、分解の前または後で、ノードにラベルを付すことができる。
再度図2を参照すると、図2は、正規表現を表現するグラフを分解する例を示す。図示したように、分解モジュール101はグラフ201を入力として受け取る。グラフ201には、正規表現「(\d\d)|(a(b|c))」のマッチ状態を示すために予めラベルを付してある(斜線の網掛けで表す)。分解モジュール101は、グラフ201を分解してキーワード・グラフ202を出力する。グラフ201内のラベルはキーワード・グラフ202に受け継がれる。したがって、テキストをグラフ201、または、キーワード・グラフ202の何れかと比較(これらに対して実行)すると、任意のマッチが「(\d\d)|(a(b|c))」に対するマッチとして示される。
再度図4を参照すると、図4は、正規表現を表現するグラフを分解する別の例を示す。図示したように、分解モジュール101はグラフ401を入力として受け取る。グラフ401には、正規表現「([a,b,c]x)|(\d(cd|[1,3,5]([a,c,d]|ea)))」のマッチ状態を示すために予めラベルを付してある(斜線の網掛けで表す)。分解モジュール101は、グラフ401を分解してキーワード・グラフ402を出力する。グラフ401内のラベルはキーワード・グラフ402に受け継がれる。したがって、テキストをグラフ401、または、キーワード・グラフ402の何れかと比較(これらに対して実行)すると、任意のマッチが「([a,b,c]x)|(\d(cd|[1,3,5]([a,c,d]|ea)))」に対するマッチとして示される。
幾つかの実施形態では、グラフは以下のアルゴリズムに従ってキーワード・グラフに分解される。
ルート・ノードから開始する。
ルート・ノードの全ての子ノードを特定する。
これらのノードごとに、
a.当該ノード(これを「prefix.i」と称する)より上の親ノードをコピーする。
b.当該ノードおよびその部分木を「prefix.i」の子として追加する。
c.現在のノードのルート・ノードとしての使用を除き、(2)から再度実行する。
当該アルゴリズムにより、当該グラフを表現するキーワード・グラフの集合(例えば、DAG)を生成することができる。各キーワード・グラフは、葉ノードである単一の終端ノードを有する。各グラフにおいて、各ノードは単一の子ノードを有する。
一般に、マージを使用して、正規表現の集合を表現する単一の有向非循環グラフ(「DAG」)を生成することができる。したがって、マージ・モジュール101は、2つのグラフを入力として受け取って、当該2つのグラフを、2つの入力グラフのマッチ状態を集合的に表現する単一のDAGにマージするように構成される。処理の冗長性を排除するために、マージ・モジュール101は、2つの入力グラフ内の同様に配置されたノードにある重複する文字パターンを、単一のDAG内の単一のノードへと結合することができる。文字パターンが部分的に重複するとき、マージ・モジュール101は一方の入力グラフ内のノードにある当該文字パターンを変更することができる。マージ・モジュール101は次いで、当該ノードともう一方の入力グラフ内の対応するノードとの間に追加のエッジを加えることにより、補償することができる。追加のエッジを加えることで、2つの入力グラフと単一のDAGとの間のマッチ状態における等価性が促進される。
幾つかの実施形態では、マージ・モジュール141が2つのキーワード・グラフを単一のDAGにマージする。他の諸実施形態では、マージ・モジュール141はキーワード・グラフおよび別のグラフを単一のDAGにマージする。マージ・モジュール141の機能を必要に応じて再利用して、数組の大規模なグラフを共にマージすることができる。
図3を参照すると、マージ・モジュール141はキーワード・グラフ301(例えば、別のグラフから前もって分解したもの)およびグラフ302を有向非循環グラフ304にマージする。マージ・モジュール141はグラフ302およびキーワード・グラフ301Aを入力として利用する。マージ・モジュール141はグラフ302およびキーワード・グラフ301Aを中間グラフ303にマージする。続いて、マージ・モジュール141は中間グラフ330およびキーワード・グラフ301Bを利用する。マージ・モジュール141は中間グラフ303およびキーワード・グラフ301Bを有向非循環グラフ304にマージする。文字パターンのノード312および313が重複するので、ノード312および313は有向非循環グラフ304内の単一のノード314にマージされる。
(異なる斜線の罫線で示された)ラベルは、マージ処理にわたって保持される。したがって、終端ノードはマッチした正規表現を示す。ノード316および317は、正規表現「\d\d|um」(ノード316および317がそこから分解された正規表現)に対するマッチを示し、ノード318は、正規表現「un」に対するマッチを示す。
図3で示したように、マージ・モジュール141への入力は外部にある。他の実施形態では、マージ・モジュール141は1組のグラフを入力として受け取ってDAGを出力する。処理の最中は、中間グラフがマージ・モジュール141内部で保持され処理される。
図示したように、マージ・モジュール141は位置検出器142、重複検出器143、および重複補償器144を備える。マージ位置にある間は、位置検出器142は、別のグラフにおいて同様に配置されたノードを特定するように構成される。同様に配置されたノードを、ルート・ノードからの距離に基づいて特定することができる。例えば、図3では、ノード312および313が同様に配置されている。マージの最中は、重複検出器143は、別のノードの文字パターンが少なくとも部分的に重複するかどうかを検出するように構成されている。例えば、文字パターン[1,3,5]は文字パターン\dに部分的にマッチする。他方、文字パターン[a,b,c]および文字パターン[a,b,c]は完全に重複している。マージの最中は、重複補償器144は、部分的に重複する文字パターンを有するノードが単一のノードにマージされるときに補償するように構成されている。補償には、マージされている入力グラフ間にエッジを追加することを含むことができる。追加のエッジにより、入力グラフのマッチ状態と結果のDAGのマッチ状態との間の等価性が促進される。
図5は、異なる正規表現を表現するグラフをマージする別の例を示す。キーワード・グラフ501およびグラフ502を、入力として(例えば、マージ・モジュール141で)受け取ることができる。位置検出器142は、ノード511およびノード512がそれぞれキーワード・グラフ501およびグラフ502の中で同様に配置されていることを検出することができる。重複検出器143は、部分的に重複するパターン503(または共通エッジ)を特定することができる。即ち、文字パターン\dは文字パターン[2,3]と部分的に重複する。重複補償器144は、ノード511の文字パターンを「\d−[2,3]」に変更することによって、この部分的な重複を削除(共通エッジを削除)することができる。重複補償器はまた、ノード512からノード513へエッジ514を追加することができる。マージ・モジュール114は次いで、ルート・ノードを結合して、(変更した)キーワード・グラフ501をグラフ502に追加することができる。重複補償により、マージすべきグラフが、依然として等価なマッチ状態を表現することが可能になる。例えば、テキスト文字列「2cd」は、比較がノード512で行われて(ノード511が回避されて)いる場合でも、依然としてキーワード・グラフ501にマッチする。
図示したように、終端ノード内部の異なる罫線が、それぞれキーワード・グラフ501およびグラフ502のマッチ状態を示す。
幾つかの実施形態では、グラフは以下のアルゴリズムに従ってマージされる。
ルート・ノードのみを有する空のDAGを作成し、これにFinal.DAGとしてラベルを付す。
集合内のDAG(i.DAG)ごとに、以下を行う。
a.i.ノードをi.DAGのルート・ノードに設定する。
b.final.ノードをFinal.DAGのルート・ノードに設定する。
c.final.ノードが厳密に同一のエッジを有する限り、i.ノードからfinal.ノードまで繰り返す。
d.i.ノードのエッジがfinal.ノードのエッジのスーパーセットである場合は、
i.i.ノードとfinal.ノードとの間の共通でない文字を表現するエッジを追加する。このエッジはi.ノードの子を指す。
ii.共通の(エッジ、ノード)ごとに
1.final.ノードおよびi.ノードが厳密に同一のエッジを有する限り、それらについて繰り返す。
2.終端ノードに到達した場合は、それにi.DAGの終端としてラベルを付す。
3.そうでない場合は、final.ノードからi.ノードの子へのエッジを追加する。
e.final.ノードのエッジがi.ノードのエッジのスーパーセットである場合は、
i.i.ノードとfinal.ノードとの間の共通でない文字を表現するエッジを追加する。このエッジはfinal.ノードの子を指す。
ii.共通の(エッジ、ノード)ごとに
1.final.ノードおよびi.ノードが厳密に同一のエッジを有する限り、それらについて繰り返す。
2.終端ノードに到達した場合は、それにfinal.DAGの終端としてラベルを付す。
3.そうでない場合は、i.ノードからfinal.ノードの子へのエッジを追加する。
図6A、図6Bは、正規表現を分解しマージするための例示的な方法600の流れ図を示す。方法600を、コンピュータ・アーキテクチャ100のコンポーネントおよびデータに関して、かつ、図3および図5を一部参照して、説明する。
方法600は、第1の正規表現を表現するグラフにアクセスする動作を含む(動作601)。例えば、分解モジュール101は、正規表現111を表現するグラフ112にアクセスすることができる。方法600は、グラフを1つまたは複数のキーワード・グラフに分解する動作を含む。1つまたは複数のキーワード・グラフの各々は、1つのルート・ノード、1つまたは複数の中間ノード、および1つの葉ノードを有し、1つまたは複数の中間ノードの各々および葉ノードは、第1の正規表現に部分的にマッチする文字パターンを特定し、ルート・ノードおよび1つまたは複数の中間ノードの各々は、単一の子ノードを有し、中間ノードの1つは、葉ノードを子ノードとして有する(動作602)。例えば、分解モジュール101は、グラフ112をキーワード・グラフ113(例えば、113A、113B、113C、等)に分解することができる。
方法600は、1つまたは複数のキーワード・グラフの各々の葉ノードに、第1の正規表現のマッチ状態としてラベルを付す動作を含む(動作603)。例えば、ラベリング・モジュール102は、キーワード・グラフ113の葉ノードにラベルを付して、ラベル付きのキーワード・グラフ113AL、113BL、113BL、等を生成することができる。
方法600は、第2の正規表現を表現する第2のグラフにアクセスする動作を含む。第2のグラフは、1つのルート・ノード、1つまたは複数の中間ノード、および1つまたは複数の葉ノードを有し、1つまたは複数の中間ノードおよび1つまたは複数の葉ノードの各々は、第2の正規表現に部分的にマッチする文字パターンを特定する(動作604)。例えば、ラベリング・モジュール102は、正規表現121を表現するグラフ123にアクセスすることができる。方法600は、第2のグラフ内の1つまたは複数の終端ノードに、第2の正規表現のマッチ状態としてラベルを付す動作を含む(動作605)。例えば、ラベリング・モジュール102は、グラフ123の終端ノードにラベルを付して、ラベル付きのグラフ123Lを生成することができる。
方法600は、1つまたは複数のキーワード・グラフおよび第2のグラフを、第1の正規表現および第2の正規表現の両方を集合的に表現する有向非循環グラフにマージする動作を含む(動作606)。例えば、マージ・モジュール141は、ラベル付きキーワード・グラフ113Lおよびラベル付きグラフ123Lを有向非循環グラフ134にマージすることができる。有向非循環グラフ134は、正規表現111および正規表現121を集合的に表現する。
動作606は、少なくとも部分的に重複する文字パターンを有する、1つまたは複数のキーワード・グラフおよび第2のグラフ内の任意の同様に配置された中間ノードを特定する動作の動作を含む(動作607)。例えば、位置検出器142は、もう1つのラベル付きキーワード・グラフ113Lおよびラベル付きグラフ123L内の同様に配置された中間ノードを特定することができる。同様に配置されたノードは、そのルート・ノードから等距離のノードであることができる。例えば、図3を参照すると、ノード312および313は同様に配置されている(両方とも、その対応するルート・ノードから1つのエッジのところにある)。同様に、図5では、ノード511および512が同様に配置されている。ノード513および514も図5において同様に配置されている。
同様に配置された中間ノードにおいて、重複検出器143は、ノードが少なくとも部分的に重複する文字パターンを有する場合を検出することができる。図3では、ノード312および313は完全に重複している。図5では、ノード511および512が部分的に重複し、ノード513および514は重複していない。
同様に配置され、部分的に重複する文字パターンを有する、キーワード・グラフ内の任意の特定された中間ノードおよび第2のグラフ内の任意の特定された中間ノードに対して、動作606は、少なくとも1つの特定された中間ノードの文字パターンを変更して、部分的に重複する文字パターンを排除する動作を含む(動作608)。例えば、重複補償器144は、中間ノードにおける文字パターンを変更して別のノードとの部分的な重複を排除することができる。図5を参照すると、ノード511にある文字パターン「\d」を([0,1,4,5,6,7,8,9]と等価である)「\d−[2,3]」に変更してノード512との部分的な重複を排除することができる。
同様に配置され、部分的に重複する文字パターンを有する、キーワード・グラフ内の任意の特定された中間ノードおよび第2のグラフ内の任意の特定された中間ノードに対して、動作606は、キーワード・グラフと第2のグラフとの間にエッジを追加して、少なくとも1つの特定された中間ノードの文字パターンの変更を補償する動作を含む(動作609)。例えば、重複補償器144は、変更されていないノードから変更されたノードより下のノードへエッジを追加して、変更されたノードの文字パターンの変更を補償することができる。図5を参照すると、エッジ514をノード512からノード513に追加して、ノード511の文字パターンの変更を補償することができる。
同様に配置され、完全に重複する文字パターンを有する、キーワード・グラフ内の任意の特定された中間ノードおよび第2のグラフ内の任意の特定された中間ノードに対して、動作606は、キーワード・グラフおよび第2のグラフを、キーワード・グラフ内の中間ノードおよび第2のグラフ内の中間ノードを完全に重複する文字パターンを表現する単一のノードへと結合することによって結合する動作を含む(動作610)。例えば、重複補償器144は、ラベル付きのキーワード・グラフ113Lの中間ノードおよびラベル付きのグラフ123Lの中間ノードを結合することができる。図3を参照すると、ノード312およびノード313をノード314に結合することができる。
DAGの作成に続いて、DAGを状態機械上でテキストの一部に対して実行して、テキストの一部がDAGで表現した任意の正規表現にマッチするかどうかを判定することができる。
幾つかの実施形態では、マージ・グラフを正規表現の他のパスと結合して、拡張正規表現構文(例えば、*、+、または数字集合)を容易にする。例えば、DAGを構築して正規表現を表現するとき、正規表現の全体をDAGによって表現できないこともありうる。例えば、正規表現は、?:のような文字、または入れ子の*演算子を含みうる。
さらに複雑な状態機械を構築してこれらの種類の演算子を扱うことができる。別の代替手段は、実際の正規表現とモノリシックなDAGを含む複数の「テキスト・プロセッサ」を作成することである。次いで以下のアルゴリズムを使用して正規表現をマージすることができる。即ち、
正規表現を、複雑なDAGとして表現できるコンポーネントおよび複雑なDAGとして表現できないコンポーネントに分解する。
a.123\d\d\d(5.*3)*\d\d\d\dを考える。
b.これにより、以下のコンポーネントを生成することができる。即ち、
i.DAG:123\d\d\d|\d\d\d\d
ii.正規表現:(5.*3)*
正規表現および単一のDAGに対して全ての「テキスト・プロセッサ」を実行する。
これらのテキスト・プロセッサが見つかったテキスト内の位置(DAG/Regexにより保証されるように、既にソートされている)を収集する。
元の正規表現を、DAGおよびその正規表現の結果に基づいて再構築し、それが発見されたかどうかを判定する。
ステップ(3)の結果がヒープ集合(例えば、フィボナッチ・ヒープ)に格納されている場合は、このステップはO(n)で束縛される。
したがって、生成されたDAGを正規表現エンジンとともに使用して、正規表現のアルファベット全体について結果を生成することができる。マルチパスのアプローチにより、インプレースの後方トラッキングまたは前方トラッキングのない先読みまたは後読みの正規表現を実行することができ、これによりシステムの複雑度を軽減し、性能を支援する。
したがって、本発明の諸実施形態では、正規表現を複数の単純なキーワード・グラフに分解し、これらのキーワード・グラフを単純かつ効率的にマージし、簡略化された正規表現のアルファベットを実行できる有向非循環グラフ(DAG)を生成する。これらの正規表現のDAGの幾つかを共にマージして、正規表現の集合全体を表現する単一のDAGを生成することができる。他のテキスト処理アルゴリズムおよびヒープ集合に従うDAGを、マルチパスのアプローチで結合して正規表現のアルファベットを拡張することができる。
本発明を、その趣旨または本質的な特徴から逸脱しない他の特定の形で具体化してもよい。説明した諸実施形態は、全ての点において限定ではなく例として考えるべきである。したがって、本発明の範囲は、以上の記載ではなく添付の特許請求の範囲により示される。特許請求の範囲の意味および均等の範囲にある全ての変更は、その範囲に含まれるべきである。

Claims (14)

  1. 1つまたは複数のプロセッサおよびシステム・メモリを含むコンピュータ・システムにおいて、有向非循環グラフで複数の正規表現を表現する方法であって、
    コンピュータ・システムが、第1の正規表現から分解された1つまたは複数のキーワード・グラフにアクセスする動作であって、1つまたは複数のキーワード・グラフの各々はルート・ノード、1つまたは複数の中間ノード、および葉ノードを有し、前記1つまたは複数の中間ノードの各々および前記葉ノードが、前記第1の正規表現に部分的にマッチする文字パターンを特定し、前記ルート・ノードおよび前記1つまたは複数の中間ノードの各々は単一の対応する子ノードを有し、前記中間ノードの1つは前記葉ノードを前記対応する子ノードとして有し、各前記葉ノードは前記第1の正規表現のマッチ状態としてラベルが付される、動作と、
    前記コンピュータ・システムが、第2の正規表現の少なくとも一部を表現する第2のグラフにアクセスする動作であって、前記第2のグラフはルート・ノード、1つまたは複数の中間ノード、および1つまたは複数の葉ノードを有し、前記1つまたは複数の中間ノードおよび前記1つまたは複数の葉ノードの各々が、前記第2の正規表現に部分的にマッチする文字パターンを特定する、動作と、
    前記コンピュータ・システムが、前記1つまたは複数のキーワード・グラフおよび前記第2のグラフを、前記第1の正規表現および前記第2の正規表現の両方を集合的に表現する有向非循環グラフにマージする動作であって、
    少なくとも部分的に重複する文字パターンを有する、前記1つまたは複数のキーワード・グラフおよび前記第2のグラフ内の任意の同様に配置された中間ノードを特定する動作と、
    同様に配置され、部分的にのみ重複する文字パターンを有する、前記選択されたキーワード・グラフ内の任意の特定された中間ノードおよび前記第2のグラフ内の任意の特定の中間ノードに対して、
    前記部分的に重複する文字パターンを排除するために、前記特定された中間ノードのうちの少なくとも1つの中間ノードの文字パターンを変更する動作と、
    前記特定された中間ノードのうちの前記少なくとも1つの中間ノードの前記文字パターンの変更に対して補償をするために、前記キーワード・グラフと前記第2のグラフとの間にエッジを追加する動作と、
    同様に配置され、完全に重複する文字パターンを有する、キーワード・グラフ内の任意の特定された中間ノードおよび前記第2のグラフ内の特定された中間ノードに対して、
    前記キーワード・グラフ内の中間ノードおよび前記第2のグラフ内の中間ノードを前記完全に重複する文字パターンを表現する単一のノードへと結合することにより、前記キーワード・グラフおよび前記第2のグラフを結合する動作と
    を含む、動作と
    を含むことを特徴とする方法。
  2. 少なくとも部分的に重複する文字パターンを有する、前記選択されたキーワード・グラフおよび前記第2のグラフ内の任意の同様に配置された中間ノードを特定する前記動作は、完全に重複する、前記選択されたキーワード・グラフ内の中間ノードおよび前記第2のグラフ内の中間ノードを特定する動作を含むことを特徴とする請求項1に記載の方法。
  3. 少なくとも部分的に重複する文字パターンを有する、前記選択されたキーワード・グラフおよび前記第2のグラフ内の任意の同様に配置された中間ノードを特定する前記動作は、部分的に重複する、前記選択されたキーワード・グラフ内の中間ノードおよび前記第2のグラフ内の中間ノードを特定する動作を含むことを特徴とする請求項1に記載の方法。
  4. 前記コンピュータ・システムが、前記第1の正規表現を表現する第1のグラフにアクセスする動作と、
    前記コンピュータ・システムが、前記第1のグラフを前記1つまたは複数のキーワード・グラフへと分解する動作と
    をさらに含むことを特徴とする請求項1に記載の方法。
  5. 前記コンピュータ・システムが、前記1つまたは複数のキーワード・グラフのうちの各々のキーワード・グラフの前記葉ノードを、前記第1の正規表現に対するマッチ状態としてラベル付けする動作をさらに含むことを特徴とする請求項4に記載の方法。
  6. 前記コンピュータ・システムが、前記第2のグラフ内の各終端ノードを前記第2の正規表現に対するマッチ状態としてラベル付けする動作をさらに含み、前記終端ノードは前記1つまたは複数の中間ノートおよび前記1つまたは複数の葉ノードの中から選択されることを特徴とする請求項1に記載の方法。
  7. 前記コンピュータ・システムが、前記有向非循環グラフをテキストの一部に対して状態機械として実行して、前記テキストの一部が、前記第1の正規表現および前記第2の正規表現のうちの1つまたは複数にマッチするかどうかを判定する動作をさらに含むことを特徴とする請求項1に記載の方法。
  8. 前記第2のグラフは前記第2の正規表現から分解されたキーワード・グラフであることを特徴とする請求項1に記載の方法。
  9. コンピュータ・システムで使用するためのコンピュータ実行可能命令を格納した1つまたは複数のコンピュータ読み取り可能な記憶媒体であって、有向非循環グラフで複数の正規表現を表現するための方法を実装し、当該コンピュータ実行可能命令は、プロセッサで実行されると、前記コンピュータ・システムに、
    第1の正規表現から分解された1つまたは複数のキーワード・グラフにアクセスするステップであって、前記1つまたは複数のキーワード・グラフの各々はルート・ノード、1つまたは複数の中間ノード、および葉ノードを有し、前記1つまたは複数の中間ノードの各々および前記葉ノードが、前記第1の正規表現に部分的にマッチする文字パターンを特定し、前記ルート・ノードおよび前記1つまたは複数の中間ノードの各々は単一の対応する子ノードを有し、前記中間ノードの1つは前記葉ノードを前記対応する子ノードとして有し、各前記葉ノードは前記第1の正規表現のマッチ状態としてラベルが付される、ステップと、
    第2の正規表現を表現する第2のグラフにアクセスするステップであって、前記第2のグラフはルート・ノード、1つまたは複数の中間ノード、および1つまたは複数の葉ノードを有し、前記1つまたは複数の中間ノードおよび前記1つまたは複数の葉ノードの各々が、前記第2の正規表現に部分的にマッチする文字パターンを特定する、ステップと、
    前記1つまたは複数のキーワード・グラフおよび前記第2のグラフを、前記第1の正規表現および前記第2の正規表現の両方を集合的に表現する有向非循環グラフにマージするステップであって、
    少なくとも部分的に重複する文字パターンを有する、前記1つまたは複数のキーワード・グラフおよび前記第2のグラフ内の任意の同様に配置された中間ノードを特定するステップと、
    同様に配置され、部分的にのみ重複する文字パターンを有する、キーワード・グラフ内の任意の特定された中間ノードおよび前記第2のグラフ内の任意の特定された中間ノードに対して、
    前記部分的に重複する文字パターンを排除するために、前記特定された中間ノードのうちの少なくとも1つの中間ノードの文字パターンを変更するステップと、
    前記特定された中間ノードのうちの前記少なくとも1つの中間ノードの前記文字パターンの変更に対して補償をするために、前記キーワード・グラフと前記第2のグラフとの間にエッジを追加するステップと、
    同様に配置され、完全に重複する文字パターンを有する、キーワード・グラフ内の任意の特定された中間ノードおよび前記第2のグラフ内の特定された中間ノードに対して、
    前記キーワード・グラフ内の中間ノードおよび前記第2のグラフ内の中間ノードを前記完全に重複する文字パターンを表現する単一のノードへと結合することにより、前記キーワード・グラフおよび前記第2のグラフを結合するステップと
    を含む、ステップと、
    を含む前記方法を実施させることを特徴とする1つまたは複数のコンピュータ読み取り可能な記憶媒体
  10. 実行されると、前記コンピュータ・システムに、少なくとも部分的に重複する文字パターンを有する、前記1つまたは複数のキーワード・グラフおよび前記第2のグラフ内の任意の同様に配置された中間ノードを特定させるコンピューター実行可能命令は、実行されると、前記コンピュータ・システムに、完全に重複する、キーワード・グラフ内の中間ノードおよび前記第2のグラフ内の中間ノードを特定させるコンピュータ実行可能命令を含むことを特徴とする請求項9に記載の1つまたは複数のコンピュータ読み取り可能な記憶媒体
  11. 実行されると、前記コンピュータ・システムに、少なくとも部分的に重複する文字パターンを有する、前記1つまたは複数のキーワード・グラフおよび前記第2のグラフ内の任意の同様に配置された中間ノードを特定させるコンピューター実行可能命令は、実行されると、前記コンピュータ・システムに、部分的に重複する、キーワード・グラフ内の中間ノードおよび前記第2のグラフ内の中間ノードを特定させるコンピュータ実行可能命令を含むことを特徴とする請求項9に記載の1つまたは複数のコンピュータ読み取り可能な記憶媒体
  12. 実行されると、前記コンピュータ・システムに、前記1つまたは複数のキーワード・グラフのうちの各々のキーワード・グラフの前記葉ノードを、前記第1の正規表現に対するマッチ状態としてラベル付けさせるコンピュータ実行可能命令をさらに含むことを特徴とする請求項9に記載の1つまたは複数のコンピュータ読み取り可能な記憶媒体
  13. 実行されると、前記コンピュータ・システムに、前記第2のグラフ内の各終端ノードを前記第2の正規表現に対するマッチ状態としてラベル付けさせるコンピュータ実行可能命令をさらに含むことを特徴とする請求項9に記載の1つまたは複数のコンピュータ読み取り可能な記憶媒体
  14. コンピュータ・システムであって、
    1つまたは複数のプロセッサと、
    システム・メモリと
    を備え、前記システム・メモリは、前記1つまたは複数のプロセッサで実行されると、前記コンピュータ・システムに、有向非循環グラフで複数の正規表現を表現する方法を実行させるコンピュータ実行可能命令を格納し、前記方法は、、
    第1の正規表現から分解された1つまたは複数のキーワード・グラフにアクセスする動作であって、1つまたは複数のキーワード・グラフの各々はルート・ノード、1つまたは複数の中間ノード、および葉ノードを有し、前記1つまたは複数の中間ノードの各々および前記葉ノードが、前記第1の正規表現に部分的にマッチする文字パターンを特定し、前記ルート・ノードおよび前記1つまたは複数の中間ノードの各々は単一の対応する子ノードを有し、前記中間ノードの1つは前記葉ノードを前記対応する子ノードとして有し、各前記葉ノードは前記第1の正規表現のマッチ状態としてラベルが付される、動作と、
    第2の正規表現を表現する第2のグラフにアクセスする動作であって、前記第2のグラフはルート・ノード、1つまたは複数の中間ノード、および1つまたは複数の葉ノードを有し、前記1つまたは複数の中間ノードおよび前記1つまたは複数の葉ノードの各々が、前記第2の正規表現に部分的にマッチする文字パターンを特定し、前記第2のグラフは前記第2の正規表現のマッチ状態としてラベルが付された1つまたは複数の終端ノードを有する、動作と、
    前記1つまたは複数のキーワード・グラフおよび前記第2のグラフを、前記第1の正規表現および前記第2の正規表現の両方を集合的に表現する有向非循環グラフにマージする動作であって、
    少なくとも部分的に重複する文字パターンを有する、前記1つまたは複数のキーワード・グラフおよび前記第2のグラフ内の任意の同様に配置された中間ノードを特定する動作と、
    同様に配置され、部分的にのみ重複する文字パターンを有する、キーワード・グラフ内の任意の特定された中間ノードおよび前記第2のグラフ内の任意の特定された中間ノードに対して、
    前記特定された中間ノードのうちの少なくとも1つの中間ノードの前記文字パターンを変更して前記部分的に重複する文字パターンを削除する動作と、
    前記キーワード・グラフと前記第2のグラフとの間にエッジを追加して、前記特定された中間ノードのうちの前記少なくとも1つの中間ノードの前記文字パターンの変更を補償する動作と、
    同様に配置され、完全に重複する文字パターンを有する、キーワード・グラフ内の任意の特定された中間ノードおよび前記第2のグラフ内の任意の特定された中間ノードに対して、
    前記キーワード・グラフ内の前記中間ノードおよび前記第2のグラフ内の前記中間ノードを前記完全に重複する文字パターンを表現する単一のノードへと結合することによって、前記キーワード・グラフおよび前記第2のグラフを結合する動作と、
    を含む、動作と、
    を含むことを特徴とするコンピュータ・システム。
JP2013544518A 2010-12-15 2011-11-29 正規表現の分解およびマージ Expired - Fee Related JP5865918B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/968,618 US20120158768A1 (en) 2010-12-15 2010-12-15 Decomposing and merging regular expressions
US12/968,618 2010-12-15
PCT/US2011/062479 WO2012082362A1 (en) 2010-12-15 2011-11-29 Decomposing and merging regular expressions

Publications (3)

Publication Number Publication Date
JP2014503896A JP2014503896A (ja) 2014-02-13
JP2014503896A5 JP2014503896A5 (ja) 2014-12-04
JP5865918B2 true JP5865918B2 (ja) 2016-02-17

Family

ID=46235792

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013544518A Expired - Fee Related JP5865918B2 (ja) 2010-12-15 2011-11-29 正規表現の分解およびマージ

Country Status (8)

Country Link
US (1) US20120158768A1 (ja)
EP (1) EP2652648A4 (ja)
JP (1) JP5865918B2 (ja)
KR (1) KR20130143080A (ja)
CN (1) CN102591930B (ja)
BR (1) BR112013014936A2 (ja)
RU (1) RU2013127196A (ja)
WO (1) WO2012082362A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130091266A1 (en) * 2011-10-05 2013-04-11 Ajit Bhave System for organizing and fast searching of massive amounts of data
TW201427366A (zh) 2012-12-28 2014-07-01 Ibm 企業網路中為了資料外洩保護而解密檔案的方法與資訊裝置
CN105446952B (zh) 2014-08-20 2019-03-19 国际商业机器公司 用于处理语义片段的方法和系统
US10148547B2 (en) * 2014-10-24 2018-12-04 Tektronix, Inc. Hardware trigger generation from a declarative protocol description
CN110019983B (zh) * 2017-12-14 2021-06-04 北京三快在线科技有限公司 标签结构的扩展方法、装置及电子设备
KR102449831B1 (ko) * 2018-01-12 2022-10-04 삼성전자주식회사 신규 텍스트에 대한 정보를 제공하는 전자 장치, 신규 텍스트를 확인하는 서버 및 그 동작 방법
US11321368B2 (en) * 2018-06-13 2022-05-03 Oracle International Corporation Regular expression generation using longest common subsequence algorithm on combinations of regular expression codes
US11521101B2 (en) * 2018-10-31 2022-12-06 Fair Isaac Corporation Devices and methods for efficient execution of rules using pre-compiled directed acyclic graphs
CN110020004B (zh) * 2019-02-19 2020-08-07 阿里巴巴集团控股有限公司 一种数据计算方法及引擎
CN113127861A (zh) * 2019-12-31 2021-07-16 深信服科技股份有限公司 一种规则命中检测方法、装置、电子设备及可读存储介质
US11567998B2 (en) 2021-03-25 2023-01-31 Databricks, Inc. Dataflow graph processing
US20230368445A1 (en) * 2022-05-13 2023-11-16 Adobe Inc. Layout-aware text rendering and effects execution

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7689530B1 (en) * 2003-01-10 2010-03-30 Cisco Technology, Inc. DFA sequential matching of regular expression with divergent states
US7093231B2 (en) * 2003-05-06 2006-08-15 David H. Alderson Grammer for regular expressions
US7586851B2 (en) * 2004-04-26 2009-09-08 Cisco Technology, Inc. Programmable packet parsing processor
US7316001B2 (en) * 2004-06-05 2008-01-01 Graphlogic Inc. Object process graph system
US7685637B2 (en) * 2004-06-14 2010-03-23 Lionic Corporation System security approaches using sub-expression automata
US7627591B2 (en) * 2004-10-29 2009-12-01 Skyler Technology, Inc. Method and/or system for manipulating tree expressions
US7668942B2 (en) * 2008-05-02 2010-02-23 Yahoo! Inc. Generating document templates that are robust to structural variations
US8589436B2 (en) * 2008-08-29 2013-11-19 Oracle International Corporation Techniques for performing regular expression-based pattern matching in data streams
US8346697B2 (en) * 2008-10-31 2013-01-01 International Business Machines Corporation Direct construction of finite state machines
WO2010107114A1 (ja) * 2009-03-19 2010-09-23 日本電気株式会社 パターンマッチング装置

Also Published As

Publication number Publication date
US20120158768A1 (en) 2012-06-21
JP2014503896A (ja) 2014-02-13
WO2012082362A1 (en) 2012-06-21
CN102591930B (zh) 2015-04-29
CN102591930A (zh) 2012-07-18
EP2652648A4 (en) 2017-08-30
KR20130143080A (ko) 2013-12-30
RU2013127196A (ru) 2014-12-20
BR112013014936A2 (pt) 2016-09-13
EP2652648A1 (en) 2013-10-23

Similar Documents

Publication Publication Date Title
JP5865918B2 (ja) 正規表現の分解およびマージ
US11146286B2 (en) Compression of JavaScript object notation data using structure information
US9619449B2 (en) Compact encoding of node locations
US11394604B2 (en) Closed-loop automation of a managed network
Wu et al. A subquadratic algorithm for approximate regular expression matching
CN112069456A (zh) 一种模型文件的生成方法、装置、电子设备及存储介质
US20140074840A1 (en) System and method for classifying data dump data
CN106909435B (zh) 一种网络安全设备命令行的解析方法和装置
US20200012648A1 (en) Systems and Methods For Providing Data-Driven Evolution of Arbitrary Data Structures
CN116088846A (zh) 一种持续集成代码格式的处理方法、相关装置及设备
KR101985309B1 (ko) 최적화된 높이를 가지는 밸런스드 파스 트리를 생성하는 방법
Chang et al. Performance assessment and reliability analysis of dependable and distributed computing systems based on BDD and recursive merge
Ipate et al. Model learning and test generation using cover automata
US8910118B2 (en) Extracting business rules of a service-oriented architecture (SOA) system
US10684931B2 (en) Pattern based behavior model for system management
Liu et al. Sufficient and necessary condition to decide compatibility for a class of interorganizational workflow nets
Stolee TreeSearch user guide
Guerrouf et al. A graph transformation approach of mobile activity diagram to nested Petri nets
Naik et al. Natural language interface for querying hardware and software configuration of a local area network
Malohlava et al. Interoperable domain‐specific languages families for code generation
Besova et al. Grammar-based model transformations
Vinayaka Murthy Probe on Syntax Analyzer.
CN116301895A (zh) 文本打印方法、装置、计算机设备和存储介质
Raabjerg Extending psi-calculi and their formal proofs
CN117312874A (zh) 一种基于冲突和规则簇的规则匹配方法

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141017

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141017

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150519

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150907

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150911

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151110

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151228

R150 Certificate of patent or registration of utility model

Ref document number: 5865918

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees