3

入力テキストに最大3行のテキストがあり、1行あたり最大10文字で、文字がすべて大文字の場合に一致する正規表現を作成しようとしました。したがって、この文字列は一致する必要があります。"AA\n\nAA"

しかし、これはすべきではありません "A12c"

これでうまくいくと思いました:(パターンでマルチラインを有効にしました)

(^[A-Z]{0,10}$){0,3}

しかし、そうではありません。テキストがワンライナーである場合にのみ一致します。

式の何が問題になっているのか理解できません-{0,3}数量詞が正しく適用されていませんか?

4

1 に答える 1

6

ラインターミネータを一致させるのを忘れました:

(^[A-Z]{0,10}$\r?\n?){0,3}

start /end-of-stringではなくstart/end-of-lineのオプション^と一致するオプションが設定されていると仮定すると、動作するはずです。$

文字列に3行を超える行がある場合に正規表現を失敗させる必要がある場合は、文字列\A\zアンカーで囲むことにより、正規表現エンジンを文字列全体に一致させるか、まったく一致させないようにすることができます。

\A(^[A-Z]{0,10}$\r?\n?){0,3}\z

ただし、すべての正規表現フレーバーがこれらの文字列の開始/文字列の終了アンカーをサポートしているわけではありません。

于 2010-02-22T09:15:27.197 に答える