Time to Read

7~8分

先読み

例えば、「1000の累乗」の数値表現(たとえば 1000, 1000000, 1000000000)にマッチする正規表現を考える。素直に考えれば、

1
/1(?:000)+/

となると思うが、これだと、以下のような文字列でもマッチしてしまう。

1
2
"hogehoge10000000hogehoge".scan(/(1(?:000)+/)
=> ["1000000"]

「10000000=10,000,000」は当然1000の累乗ではないが、後ろのゼロ1つを除いた形でマッチしてしまうということだ。

そこで、先読みが登場する。

(思った以上に長々しくなったので以下を畳みます。。)
Read the rest of this entry »