正規表現の自動生成をするには、正規表現のパーザが必要になるなあ、ということでCPANを探してみたらあった。ラッキー。
YAPE: http://search.cpan.org/~pinyan/YAPE-Regex-3.01/
Regep: http://search.cpan.org/~pinyan/Regexp-Parser-0.10/
同じ人が作っているが、Regexp::Parser の方が新しいものの、YAPE の方が簡単である。YAPE::Regex::Explain というモジュールを使うと、与えた正規表現の解説をしてくれる。それなりに便利かもしれない。
The regular expression: (?i-msx:reg(ular\s+)?exp?(ression)?) matches as follows: NODE EXPLANATION --------------------------------------------------------- (?i-msx: group, but do not capture (case-insensitive) (with ^ and $ matching normally) (with . not matching \n) (matching whitespace and # normally): --------------------------------------------------------- reg 'reg' --------------------------------------------------------- ( group and capture to \1 (optional (matching the most amount possible)): --------------------------------------------------------- ular 'ular' --------------------------------------------------------- \s+ whitespace (\n, \r, \t, \f, and " ") (1 or more times (matching the most amount possible)) --------------------------------------------------------- )? end of \1 (NOTE: because you're using a quantifier on this capture, only the LAST repetition of the captured pattern will be stored in \1) --------------------------------------------------------- ex 'ex' --------------------------------------------------------- p? 'p' (optional (matching the most amount possible)) --------------------------------------------------------- ( group and capture to \2 (optional (matching the most amount possible)): --------------------------------------------------------- ression 'ression' --------------------------------------------------------- )? end of \2 (NOTE: because you're using a quantifier on this capture, only the LAST repetition of the captured pattern will be stored in \2) --------------------------------------------------------- ) end of grouping ---------------------------------------------------------(2004-12-20 12:32:38)