blog.fuktommy.com

Pythonの正規表現

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

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

Copyright© 1998-2014 Fuktommy. All Rights Reserved.
webmaster@fuktommy.com (Legal Notices)