2

文字列で特定のパターンを見つけようとしていますが、正規表現に関する私の知識は非常に基本的です。小文字を見つけるには使用できます[a-z0-9]+が、前後の文字を見つけるにはどうすればよいですか?

使用できる例: (A)ABABC[ABC].AB'@ABCD#本質的には、大文字のみ (任意の長さ)、または大文字 (任意の長さ) と先行または後続、またはその両方 (前後)、特殊文字。
許可されない: abABCaaABCaaaaAB123ABC、など。基本的には12ABGGabcaaBaa大文字 (任意の長さ) の前後または両方、アルファベットまたは数字。

許可された例または許可されていない例のいずれかをフィルタリングする正規表現を作成するにはどうすればよいですか? 私がはっきりしていることを願っています

4

4 に答える 4

4

これは、一致した大文字、その前の文字、およびその後の文字の 3 つのグループに一致します。グループが不要な場合は、括弧を削除してください。

([^a-z0-9]*)([A-Z]+)([^a-z0-9]*)

マッチングとグループ化の詳細については、適切なJavadocを参照してください。また、正規表現をオンラインでテストするための提案

于 2012-09-19T12:17:39.443 に答える
1

それははるかに簡単です。以下との一致を確認するだけです。

"^\\p{P}*[A-Z]+\\p{P}*$"

\p{P}任意の句読文字に一致します。

^メソッドを$使用している場合はドロップできます。.matches()

したがって、これは、、に一致AAB#A、、、、およびにA.失敗し1Aます。aAaaAAa

于 2012-09-19T13:01:55.360 に答える
1

シンプルにどうですか:

\b[A-Z]+\b

これは、単語文字以外の文字で囲まれた大文字に一致します

于 2012-09-19T12:44:31.250 に答える
-1

これが正規表現でできるかどうかはわかりません。比較してアルゴリズム的に試してください:

  • 文字列のすべての文字 (アルファ文字) のループを開始します。

    CurCharIsUpper = (curchar.uppercase == curchar.lower) ? 真偽; if (PrevCharIsUpper == CurCharIsUpper) blahblah; PrevCharIsUpper = CurCharIsUpper;

  • エンドループ

于 2012-09-19T12:15:34.073 に答える