POWER_OF_1000 = /1(?=(?:000)+(?:[^\d]|$))0+/ "hogehoge10000000hogehoge".scan(POWER_OF_1000) #=> [] "hogehoge1000000000hogehoge".scan(POWER_OF_1000) #=> ["1000000000"] "hogehoge1000000000".scan(POWER_OF_1000) #=> ["1000000000"] これは、「『後ろにちょうど3の倍数個の”0″が続いて、その後で数字以外か文字列終端が続いているような”1″』で始まり、”0″が1以上続く」文字列にマッチする正規表現である。 つまり、まず “1″ にマッチし(*1)、その後の先読みにより、「後ろにちょうど3の倍数個の”0″が続いて、その後で数字以外か文字列終端が続いているかどうか」ということ自体