NTTと早稲田大学は2023年6月16日、正規表現の誤りを自動で修正する技術を実現したと発表した。入力値からパターンに合致した文字列を抽出するようなケースで使われる正規表現を調べ、期待どおりの挙動となるように自動修正する。開発した技術を使うことで、正規表現の知識を持たない開発者でも正規表現の誤りを自動で修正可能になるとしている。
NTTと早稲田大学は、正規表現の誤りを自動で修正する技術を開発した。アプリケーションで利用している正規表現を調べ、期待通りの挙動となるように自動で修正する。正規表現の知識を持たない開発者でも、誤りを修正可能だとしている。
拡大画像表示
正規表現は、Webサービスの入力値からパターンに合致した文字列を抽出するといったケースで使われる、文字列合致の条件式である(図1)。入力した文字列がルールどおりかを判定する用途や、入力した文字列の中から条件に合致する部分を抜き出す用途などに使う。「正規表現に誤りがあると、意図しない文字列に合致したり、合致してほしい文字列に合致しなかったりするため、情報漏洩やサービス停止の原因になる」(両組織)。
「正規表現は、複雑な文字列パターンを簡潔に記述可能である反面、難解である。複雑な条件を指定する場合、期待どおりに働かない誤った正規表現を記述してしまうおそれがある。こうした背景から、誤った記述が修正されないままアプリケーション内に残っている事例がある」(両組織)
開発した技術では、(1)修正対象の正規表現、(2)正規表現に合致することを期待する文字列、(3)正規表現に合致しないことを期待する文字列、の3種類のデータを入力として与える。これにより、期待どおりに動作する正規表現を出力する(図2)。
拡大画像表示
なお、意図したパターンに一致する文字列を抽出する用途では、正規表現を正確に記述するためには専門知識が必要であり、これまでの技術では機械的に修正することが難しかったという。今回開発した技術は、正規表現を用いて文字列を抽出するプログラムの挙動を厳密に定義し、修正問題を形式化し、修正問題を解くアルゴリズムを考案した。NTTは、正規表現の解釈を行うプログラムの挙動を定義し、修正アルゴリズムを考案した。早稲田大学(理工学術院教授の寺内多智弘氏)は、NTTが考案した手法の理論的な正確さを検証した。