3

"UPPERCASEWORD UPPERCASEWORD 小文字の単語 UPPERCASEWORD UPPERCASEWORD"

次の RegEx は上記のパターンによく一致しますが、途中に数字がある場合は一致しません。\b[AZ][AZ][AZ]+(?:[\sa-z,]+[AZ]+)*\b

「UPPERCASEWORD UPPERCASEWORD lowercaseword 1(または任意の数字) UPPERCASEWORD UPPERCASEWORD」は一致しません

マッチに数字を含める方法はありますか? [0-9] の間にいくつかのオプションを試してみましたが、うまくいきませんでした。

4

1 に答える 1

3

実際、指定されたパターンは一致しているように見えます:

  1. 3 つ以上の大文字、次に
  2. 1 つ以上の小文字 (またはコンマまたはスペース)、次に
  3. 1 つ以上の大文字

次のパターンが必要な場合があります。

\b[A-Z][A-Z][A-Z]+(?:[\sa-z,]+[0-9]*[A-Z]+)*\b

これは次と同等です:

\b[A-Z]{3,}(?:[\sa-z,]+[0-9]*[A-Z]+)*\b

または、小文字の前に 2 つ (またはそれ以上) の大文字を許可する場合は、次のようにします。

\b[A-Z]{2,}(?:[\sa-z,]+[0-9]*[A-Z]+)*\b

テストデータを投稿していただけると助かります。

更新: 最初に説明したものとはまったく異なるものが必要なようです。これで十分ですか、それとも一致しすぎますか?

\b[A-Z]{2}.*[A-Z]{2}\b

一致が多すぎる場合、ツールが否定的な先読みをサポートしている場合、これは機能する可能性がありますが、かなり面倒です。

\b[A-Z]{2}((?!\b[a-z][a-z'0-9]+\b\s[a-z][a-z'0-9]+).)*[A-Z]{2}\b
于 2012-12-19T05:37:53.760 に答える