Pythonの正規表現
「朔最新版」に寄せられたネタ。
http://~ が10回以上現れたらスパムと判定するような正規表現を書くとき、
(.+? http\:\/\/){10}.+?
と書くとCPU負荷がすごいことになります。
(http://.+){10}
と書くと普通です。
.+
が左側にあるのが駄目なのかな。
BNFだと左再帰とか右再帰とかあって、
うまく書かないと無限ループに陥るんですけど、
正規表現でもそんな感じの問題があるんですね。
原理的にはBNFの話とは違うと思いますが。