blog.fuktommy.com

Pythonの正規表現

朔最新版」に寄せられたネタ。 http://~ が10回以上現れたらスパムと判定するような正規表現を書くとき、 (.+? http\:\/\/){10}.+? と書くとCPU負荷がすごいことになります。 (http://.+){10} と書くと普通です。

.+ が左側にあるのが駄目なのかな。 BNFだと左再帰とか右再帰とかあって、 うまく書かないと無限ループに陥るんですけど、 正規表現でもそんな感じの問題があるんですね。 原理的にはBNFの話とは違うと思いますが。

© 2008 Fuktommy.
(Legal Notices)