[#42027] 正規表現のマッチングがフリーズしてしまうコード — "conundrum /" <conundrum@...>

conundrumです。

14 messages 2006/04/14

[#42053] NKF MIME encode problem — OHARA Shigeki <os@...>

大原です。

55 messages 2006/04/20
[#42054] Re: NKF MIME encode problem — OHARA Shigeki <os@...> 2006/04/20

大原です。

[#42059] Re: NKF MIME encode problem — "NARUSE, Yui" <naruse@...> 2006/04/20

成瀬です。

[#42061] Re: NKF MIME encode problem — OHARA Shigeki <os@...> 2006/04/21

大原です。

[#42067] Re: NKF MIME encode problem — しん <dezawa@...> 2006/04/21

え、

[#42068] Re: NKF MIME encode problem — OHARA Shigeki <os@...> 2006/04/21

大原です。

[#42079] Re: NKF MIME encode problem — しん <dezawa@...> 2006/04/21

出沢です

[#42080] Re: NKF MIME encode problem — OHARA Shigeki <os@...> 2006/04/21

大原です。

[#42179] Re: NKF MIME encode problem — しん <dezawa@...> 2006/05/01

出沢@逃避中 です

[#42180] Re: NKF MIME encode problem — OHARA Shigeki <os@...> 2006/05/01

大原です。

[#42185] Re: NKF MIME encode problem — しん <dezawa@...> 2006/05/02

出沢です

[#42212] Re: NKF MIME encode problem — OHARA Shigeki <os@...> 2006/05/09

大原です。

[#42265] mime_header.rb(Re: NKF MIME encode problem) — しん <dezawa@...> 2006/05/27

出沢です

[#42295] Re: mime_header.rb(Re: NKF MIME encode problem) — OHARA Shigeki <os@...> 2006/05/28

大原です。

[#42297] Re: mime_header.rb — しん <dezawa@...> 2006/05/28

出沢です

[#42300] Re: mime_header.rb — "NARUSE, Yui" <naruse@...> 2006/05/28

成瀬です。

[#42303] Re: mime_header.rb — OHARA Shigeki <os@...> 2006/05/29

大原です。

[#42110] Re: puts,printの出力をファイルにも出力するには — 岩崎 弘孝 <IH000667@...>

岩崎です。

11 messages 2006/04/25

[#42121] RS232Cによるパソコン間の通信の不具合(質問) — "Hisashi Yahata" <yahatah@...>

ノートパソコンと電子コンパスをRS232Cで接続し、データを取得するプログラ

40 messages 2006/04/25
[#42122] Re: RS232Cによるパソコン間の通信の不具合(質問) — Hidetoshi NAGAI <nagai@...> 2006/04/25

永井@知能.九工大です.

[#42124] Re: RS232Cによるパソコン間の通信の不具合(質問) — "yahata hisashi" <yahatah@...> 2006/04/25

永井様

[#42133] Re: RS232Cによるパソコン間の通信の不具合(質問) — Hidetoshi NAGAI <nagai@...> 2006/04/26

永井@知能.九工大です.

[#42134] Re: RS232Cによるパソコン間の通信の不具合(質問) — KIMURA Koichi <kimura.koichi@...> 2006/04/26

木村です。

[#42135] Re: RS232Cによるパソコン間の通信の不具合(質問) — "U.Nakamura" <usa@...> 2006/04/26

こんにちは、なかむら(う)です。

[#42138] Re: RS232Cによるパソコン間の通信の不具合(質問) — "Hisashi Yahata" <yahatah@...> 2006/04/26

様々にご検討をいただき感謝申し上げます。

[#42139] Re: RS232Cによるパソコン間の通信の不具合(質問) — "U.Nakamura" <usa@...> 2006/04/26

こんにちは、なかむら(う)です。

[#42140] Re: RS232Cによるパソコン間の通信の不具合(質問) — "Hisashi Yahata" <yahatah@...> 2006/04/26

最後までお付き合いいただきまして、有り難うございます。

[#42141] Re: RS232Cによるパソコン間の通信の不具合(質問) — "U.Nakamura" <usa@...> 2006/04/26

こんにちは、なかむら(う)です。

[#42143] Re: RS232Cによるパソコン間の通信の不具合(質問) — "Hisashi Yahata" <yahatah@...> 2006/04/26

[#42144] Re: RS232Cによるパソコン間の通信の不具合(質問) — kou@... (塚本 晃介) 2006/04/26

塚本と申します

[#42145] Re: RS232Cによるパソコン間の通信の不具合(質問) — "Hisashi Yahata" <yahatah@...> 2006/04/26

[#42149] Re: RS232Cによるパソコン間の通信の不具合(質問) — KIMURA Koichi <kbk@...> 2006/04/26

木村です。

[#42159] Re: RS232Cによるパソコン間の通信の不具合(質問) — "Hisashi Yahata" <yahatah@...> 2006/04/28

[#42162] Re: RS232Cによるパソコン間の通信の不具合(質問) — AOKI Shigeru <saoki@...> 2006/04/28

青木@ナセ工企です。

[#42165] Re: RS232Cによるパソコン間の通信の不具合(質問) — "Hisashi Yahata" <yahatah@...> 2006/04/28

長い質問に丁寧にご回答いただき大変有り難うございます。

[ruby-list:42027] 正規表現のマッチングがフリーズしてしまうコード

From: "conundrum /" <conundrum@...>
Date: 2006-04-14 15:52:09 UTC
List: ruby-list #42027
conundrumです。

仕事で、C++のソースコードをスキャンするRubyスクリプトを書いています。
なんでそんなことしているかというと、とても特殊な組み込みC++でして、
奇怪なコーディングルールがたくさんあって、
それに違反していないかどうかを、チェックするため。

先日、そのC++コードをスキャンするRubyスクリプトが、ハングアップするように
なってしまいました。
原因は、正規表現のマッチングで固まってしまうことでした。

そこで、この現象を再現できる最小限のコードを作成して、
このメールに添付させていただき、
みなさまのご意見を伺えればと思います。

.... そのコード中のC++コード断片ですが、
なにせ業務のコード故、原文がわからないように、改ざんしてあります。
が、現象はきっちり再現します。

当方は、下記のRubyにて「固まる」現象を確認できました。

- ASR 1.8.4.1 (mswin32)
- ASR 1.8.2 (mswin32)
- 1.8.4 cygwin
- 1.8.3 cygwin

よろしくお願いします。

_________________________________________________________________
パソコンでも携帯電話でも使える 「MSN Hotmail」 
http://promotion.msn.co.jp/hotmail/ 

Attachments (1)

test_rx.20060414.rb (1.19 KB, text/x-ruby)
cpp_source_fragment = <<CPP
    if ((xxxxxxx->ZZZZZZZZZZZZZ == ZZZZZZZZZZZZZ) &&
        (xxxxxxx->AAAAAAAAA[hhhhhhhhhhhhhhhhhhhhhh]     == AAAAAAAAA[hhhhhhhhhhhhhhhhhhhhhh]) &&
        (xxxxxxx->AAAAAAAAA[iiiiiiiiiiiiiiiiiiiiiiiiiiii] == AAAAAAAAA[iiiiiiiiiiiiiiiiiiiiiiiiiiii]) &&
        (xxxxxxx->AAAAAAAAA[jjjjjjjjjjjjjjjjjjjjjjjjjj] == AAAAAAAAA[jjjjjjjjjjjjjjjjjjjjjjjjjj]) &&
        (xxxxxxx->AAAAAAAAA[kkkkkkkkkkkkkkkkkkkkkkkkkk] == AAAAAAAAA[kkkkkkkkkkkkkkkkkkkkkkkkkk]) &&
        (xxxxxxx->AAAAAAAAA[lllllllllllllllllllllllllll] == AAAAAAAAA[lllllllllllllllllllllllllll]) &&
        (xxxxxxx->AAAAAAAAA[mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm] == AAAAAAAAA[mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm]) &&
        (xxxxxxx->BBBBBBBBBBBBBB == BBBBBBBBBBBBBB) &&
        (xxxxxxx->CCCCCCCCCCCCCCC == CCCCCCCCCCCCCCC))

    if ((xxxxxxx->DDDDDDDDDDDDD == DDDDDDDDDDDDD) &&
        (xxxxxxx->FFFFFFFFFFFFFFF == FFFFFFFFFFFFFFF))
CPP

rx_five_level_nested_parentheses = %r!(\([^\(\)]*(\([^\(\)]*(\([^\(\)]*(\([^\(\)]*(\([^\(\)]*[^\(\)]*\)[^\(\)]*)*[^\(\)]*\)[^\(\)]*)*[^\(\)]*\)[^\(\)]*)*[^\(\)]*\)[^\(\)]*)*[^\(\)]*\))\s*\Z!m

if cpp_source_fragment =~ rx_five_level_nested_parentheses
  puts 'matched.'
end

In This Thread

Prev Next