罩fс
On 21 Feb 2017, at 4:55, AOKI Yoshihiro wrote:
> Mac OS 10.10.5
> ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin14]
> ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin14]
> UTF-8
>
> という環境で,
>
> s = "A A A A A A A A A A A A A A A A A A A A A A A A "
> /((A )+)+([((][))])/ =~ s
>
> 2行を実行すると,
> 1.4秒という比較的長い時間がかかります。
>
> % time ruby z.rb
> ruby z.rb  1.42s user 0.03s system 99% cpu 1.455 total

この正規表現は、いわゆるReDoS脆弱性につながるタイプのものの
ように見受けられました。端的には、
「文字列の繰り返しマッチを繰り返す」
パターンです(注: 
ReDoS脆弱性は、それには限らないようです)。

つまり、正規表現が苦手とするパターンと言っていいのでしょうか
(私は全然詳しくないので、誤っていればご指摘下さい!)。

○参考:
   「正規表現でのメールアドレスチェックは見直すべき 
 ReDoS」
   by 大垣靖男
   https://blog.ohgaki.net/redos-must-review-mail-address-validation

Perlは比較的強いように聞いているので、Ruby, Perl, 
Pythonで
試してみました。

% ruby --version
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin16]
% time ruby -e 's = "A A A A A A A A A A A A A A A A A A A A A A A A 
";/((A )+)+([((][))])/ =~ s;'
ruby -e   1.54s user 0.02s system 97% cpu 1.598 total
% perl --version
  # => (v5.24.0)
% time perl -mutf8 -e '$s = "A A A A A A A A A A A A A A A A A A A A A A 
A A ";$s =~ /((A )+)+([((][))])/;'
perl -mutf8 -e   0.00s user 0.00s system 53% cpu 0.009 total
% python --version
Python 2.7.12
% time python -c "import re;s = 'A A A A A A A A A A A A A A A A A A A A 
A A A A ';re.compile(ur'((A )+)+([((][))])', re.UNICODE).search(s);"
python -c   6.37s user 0.03s system 99% cpu 6.425 total
%

ご参考までに。
# Perl が速すぎる気がしますが……。

坂野正明