質問

いすべて PascalCased 単語の文書を正規表現とは

わからない場合は、単語のパスカルケース入りで、私は関係する有力 上部キャメルの場合 (キャメルケース入りする単語の最初の文字).

役に立ちましたか?

解決

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

英語を仮定。あなたはそれを国際化したい場合は、適切な文字クラスを使用します。これは、「これ」などの単語にマッチします。あなたが唯一の少なくとも二つの大文字での単語を一致させたい場合は、単に使用します。

([A-Z][a-z0-9]+){2,}

UPDATE: 私はコメントで述べたように、より良いバージョンがあります:

[A-Z]([A-Z0-9]*[a-z][a-z0-9]*[A-Z]|[a-z0-9]*[A-Z][A-Z0-9]*[a-z])[A-Za-z0-9]*

これは、大文字で始まり文字と数字のみを含めると、少なくとも1つの小文字と少なくとも一つの他の大文字を含む文字列にマッチします。

他のヒント

低いラクダの場合

この正規表現を含む数を実装し 厳しい低下のラクダの場合 として定義され Google Javaスタイルガイド regexバリデーションを実施します。

[a-z]+((\d)|([A-Z0-9][a-z0-9]+))*([A-Z])?
  1. 最初の文字である。
  2. 具体的には、以下のような素のいずれか単一の番号字文字の後に低い場合文字までです。
  3. 最後の文字が上場します。

こちらは スニペット こregex.具体的には、以下のような素を有効とします。

xmlHttpRequest
newCustomerId
innerStopwatch
supportsIpv6OnIos
youTubeImporter
youtubeImporter
affine3D

上部キャメルの場合

同じ原則が使用される低キャメルケースを開始文字の文字です。

([A-Z][a-z0-9]+)((\d)|([A-Z0-9][a-z0-9]+))*([A-Z])?

ここでは、スニペットを示すこregex.具体的には、以下のような素を有効とします。

XmlHttpRequest
NewCustomerId
InnerStopwatch
SupportsIpv6OnIos
YouTubeImporter
YoutubeImporter
Affine3D

(適切FitNesseのDbFit Webサービスによって認識されるディレクトリを命名)私の問題を解決した正規表現は、次のとおりです。

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

私はこれらの特定のキャメルケースのルールをリバースエンジニアリングし、彼らは次のとおりです:

1. First character uppercase alpha
2. Next 1-n characters lowercase alphanumeric
3. Next character (n+1) uppercase alpha
4. Next 0 or more characters lowercase alphanumeric
No consecutive uppercase; no special characters.
Pattern may be repeated, e.g. NoChildLeftBehindSuite9102
次のように

式は、私のテストに合格します:

Camel01C is CamelCase syntax
Camel01c01 is not CamelCase syntax
Camel01C01 is CamelCase syntax
Camel01CC01 is not CamelCase syntax
Camel0a1c1 is not CamelCase syntax
Camel0a1C1 is CamelCase syntax
Camel0ac1b1C1 is CamelCase syntax
CamelC is CamelCase syntax
CamelC1 is CamelCase syntax
CamelCA is not CamelCase syntax
CamelCa1 is CamelCase syntax
CamelCa_1 is not CamelCase syntax
IbsReleaseTestVerificationRegressionSuite is CamelCase syntax
IbsReleaseTestVerificationRegressioNSuite is not CamelCase syntax
IbsReleaseTestVerificationRegressioN is CamelCase syntax

アダムCrumeの正規表現は近いですが、例のIFooHTTPConnectionのために一致しなくなります。他の人について確認が、これを試してみていない。

\b[A-Z][a-z]*([A-Z][a-z]*)*\b

桁、I18N、アンダースコアなどに関するアダムの答えと同じ注意事項を。

あなたはそれをテストすることができますここを。

このはそれを行うようです。

/^[A-Z][a-z]+([A-Z][a-z]+)+/

私は、Rubyの単体テストを含めました。

require 'test/unit'

REGEX = /^[A-Z][a-z]+([A-Z][a-z]+)+/

class RegExpTest < Test::Unit::TestCase
  # more readable helper
  def self.test(name, &block)
    define_method("test #{name}", &block)
  end

  test "matches camelcased word" do
    assert 'FooBar'.match(REGEX)
  end

  test "does not match words starting with lower case" do
    assert ! 'fooBar'.match(REGEX)
  end

  test "does not match words without camel hump" do
    assert ! 'Foobar'.match(REGEX)
  end

  test "matches multiple humps" do
    assert 'FooBarFizzBuzz'.match(REGEX)
  end
end
([A-Z][a-z\d]+)+

アッパーキャメルケースのためにトリックを行う必要があります。それでもアッパーキャメルケースを_IsRunningのようなものを検討したい場合は、同様にそれに先頭のアンダースコアを追加することができます。

だけの変更につ@AdamCrumeの提案:

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

このまま試合 IFrame, がない ABC.その他のキャメルケース入りの言葉はおおむね一致しており、例えば AbcDoesWork, もっとも重要 でも試合で簡単な単語を持たない少なくとも他の資書, など Frame.

どのようなところが良いと思いこのバージョンになっていますか?私は不要です。

([a-z0-9]+|[A-Z0-9]+[a-z0-9]*|[A-Z0-9][a-z0-9]*([A-Z0-9][a-z0-9]*)*)

キャメルケースの文字列に一致する

Javaの正規表現ます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top