3

正規表現を使用して、文字列内の 3 つの連続する大文字を見つけようとしています。

私は使用してみました:

\b([A-Z]){3}\b  

ある程度機能する私の正規表現として。

ただし、これは文字列のみを返します。また、文字列内にネストされた 3 つの連続する大文字を検索することも必要です。すなわちthisISAtest

4

1 に答える 1

6

正規表現にこれらの単語境界があるのはなぜ\bですか?単語境界により、単語文字の後に非単語文字が続く (またはその逆) ことが保証されます。thisISAtestこれらは、一致を妨げるものです。それらを削除すると、あなたは良いはずです!

([A-Z]){3}

もう 1 つのことは、キャプチャ グループを使用している理由がわからないことです。3 つの大文字の最後の文字を抽出していますか? そうでない場合は、次を使用できます。

[A-Z]{3}

明確な量指定子を使用するために必ずしもグループが必要なわけではありません。:)

編集: 大文字がさらに連続するのを防ぐために、否定的なルックアラウンドを利用できます。

(?<![A-Z])[A-Z]{3}(?![A-Z])

(?<![A-Z])先行する大文字がないことを確認します。

(?![A-Z])次の大文字がないことを確認してください。

于 2013-08-18T09:46:00.023 に答える