4

小さな宝石を Ruby 1.9.3 から気の利いた新しい Ruby 2.0.0 に移植しました。私がしなければならなかった唯一の変更は、正規表現でした。

1.9.3 では、次の正規表現は、数字、数字関連の句読点、および空白 (非改行スペースを含む) 以外の文字を含む任意の文字列に一致します。

/[^[[:space:]]\d\-,\.]/

2.0.0 では、否定クラスの先頭から Posix 空間クラスを移動する必要がありました。

/[^\d\-,\.[[:space:]]]/

私が確認したパッチ ノートにこの変更が記載されていません。それはどこかに文書化されていますか?

4

1 に答える 1

8

正規表現エンジンが Onigmo (鬼車ベース) に変更されたため、問題が発生している可能性があります。

私の知る限り、正規表現の宣言が間違っています。ブラケットの 2 番目のセットは必要ありません。

/[^[:space:]\d\-,\.]/

宣言はセット内でのみ無効であるため、単独で使用され[:space:]ているように見えます。[[:space:]]あなたの場合、セットに他のいくつかの追加があります。

\sこの場合、なぜ十分でなかったのかわかりません。

于 2013-02-25T21:59:51.453 に答える