監視された単語での数字一致のルール

下記の図に示すように、一致する単語は「Test」、「123」、「测试」(簡体字中国語で「Test」を意味します)です。

一致が成功した場合、一致した単語の直前にある任意の数値が一致結果に含まれます。これはUnicode文字にも適用されます。
一致した単語の直後の数値にはこの動作は見られません。
これは数値の一致にも影響し、文字列が英字と数字のみで構成されている場合も同様です。例えば、「Test123」は「Test」にのみ一致し、「123」や「Test123」(それ自体)には一致できません。

私が少し乗り遅れているのかもしれませんが、これはどのような種類の一致ルールなのでしょうか?誰か説明していただけませんか?:melting_face:

「いいね!」 1

これは、デバッグが少し厄介な、正規表現のバグの可能性があります。最近この分野で作業されたことがある @zogstrip さん、ご確認いただけますでしょうか(ただし、これはしばらく前から存在しているようです)。

私の理解は以下の通りです…

単語をチェックするとき、一致しなければならないセグメントは 3 つあります。先頭、単語、末尾です。先頭と末尾を、文字以外の文字(句読点、スペース、または数字)に設定しています。ここでマッチを狂わせているのは数字です。意図としては、単語の前後が句読点などで囲まれていても、単語をキャッチできるようにすることです。

そのため、正規表現は 123Test を見て、Test を見つけ、その前を見ると 3 があり、これが「文字以外」として一致し、その後ろを見ると単語の終わりが見つかります。したがって、3Test に一致します。

先頭/末尾のセグメントで、数字以外の文字もチェックする必要があると思います。数字を含めなかった理由があるのか、それとも単なる見落としなのかはわかりません。

「いいね!」 2

このトピックは Bug カテゴリに移動する必要があるかもしれませんか?

「いいね!」 1

これで今回は本当に修正されるはずです。これまでRuby版とJS版で使用されている正規表現に一貫性のない問題がありましたが、それは不要になりました。

「いいね!」 3