発明の詳細な説明【技術分野】 【0001】 本発明は、修正装置、修正方法及び修正プログラムに関する。 続きを表示(約 2,000 文字)【背景技術】 【0002】 正規表現は文字列のパターンを表す記法として世の中で広く利用されている。世の中では文字列が特定のパターンに一致するかどうか確認する場面(これを今後「所属判定」と呼ぶ)や特定のパターンに一致する部分文字列を抽出する場面(これを今後「抽出タスク」と呼ぶ)が多々存在する。そのため世の中で利用されているプログラミング言語の多くはこれらを実現する機能を標準ライブラリ(正規表現エンジン)として提供している。 【0003】 正規表現はその簡潔さや便利さから世の中で広く受け入れられているものの、利用者が意図した正規表現を正しく書くことは難しいことが知られている。すなわち、本来利用者が求めているものと異なるパターンを表す正規表現を書いてしまうことがある。 【0004】 求めているものと異なる正規表現を書いた場合、その正規表現が利用されているプログラムでは間違った一致判定や間違った部分文字列を抽出してしまう可能性がある。意図しない挙動はプログラムのバグや脆弱性となりうるため、このようなことは望ましくなく解決すべき課題として正規表現を自動で修正する技術に関する研究が行われている。 【0005】 例を用いて正規表現を修正する技術が知られている(例えば、非特許文献1、2、3及び4を参照)。これらの技術は例のみ、もしくは正規表現と例を受け取り、例を全て満たすような正規表現を出力する技術である。 【0006】 また、抽出タスク用の正規表現を例から合成する技術が知られている(例えば、非特許文献5及び6を参照)。これらの技術は遺伝的アルゴリズムを用いて例をできる限り多く満たすような正規表現を合成する技術である。 【先行技術文献】 【非特許文献】 【0007】 Mina Lee, Sunbeom So, Hakjoo Oh, Synthesizing Regular Expressions from Examples for Introductory Automata Assignments, RONG PAN, QINHEPING HU, GAOWEI XU, LORIS D’ANTONI, Automatic Repair of Regular Expressions Yeting Li, Zhiwu Xu, Jialun Cao, Haiming Chen, Tingjian Ge, Shing-Chi Cheung, FlashRegex: Deducing Anti-ReDoS Regexes from Examples Nariyoshi Chida, Tachio Terauchi, Repairing DoS Vulnerability of Real-World Regexes Alberto Bartoli, Giorgio Davanzo, Andrea De Lorenzo, Eric Medvet, and Enrico Sorio, Automatic Synthesis of Regular Expressions from Examples Alberto Bartoli, Andrea De Lorenzo, Eric Medvet, and Fabiano Tarlao, Inference of Regular Expressions for Text Extraction from Examples Yuto Sakuma, Yasuhiko Minamide, Andrei Voronkov, Translating regular expression matching into transducers 【発明の概要】 【発明が解決しようとする課題】 【0008】 しかしながら、従来の技術では、抽出タスクに用いられる正規表現を修正し、かつその修正結果は全ての例を満たすことを保証することができない場合がある。 【0009】 例えば、非特許文献1等に記載の、例を用いて正規表現を修正する技術は、所属判定用の正規表現の修正を対象としたものであり、抽出タスク用の正規表現を対象としたものではない。 【0010】 また、非特許文献5等に記載の、遺伝的アルゴリズムを用いて正規表現を合成する技術は、修正結果が全ての例を満たすことは保証していない。 【課題を解決するための手段】 (【0011】以降は省略されています) この特許をJ-PlatPatで参照する