문제

모든 것을 어떻게 찾을 수 있습니까? pascalcased 정규 표현이있는 문서의 단어?

Pascal Cased라는 단어를 모른다면, 나는 단지 선두에 관심이 있습니다. 상단 낙타 케이스 (즉, 첫 글자가 대문자로 된 낙타 케이스 워드).

도움이 되었습니까?

해결책

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

영어를 가정합니다. 국제화 가능한 경우 적절한 캐릭터 클래스를 사용하십시오. 이것은 "this"와 같은 단어와 일치합니다. 단어 만 두 개 이상의 수도와 일치 시키려면

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

업데이트 : 의견에서 언급했듯이 더 나은 버전은 다음과 같습니다.

[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]*

대문자로 시작하는 줄과 일치하고 문자와 숫자 만 포함하며 최소한 하나의 소문자와 하나 이상의 다른 대문자 문자를 포함합니다.

다른 팁

낙타 케이스

이 REGEX에는 숫자와 도구가 포함되어 있습니다 엄격한 하부 낙타 케이스 에 의해 정의 된대로 Google Java 스타일 가이드REGEX 검증.

[a-z]+((\d)|([A-Z0-9][a-z0-9]+))*([A-Z])?
  1. 첫 번째 캐릭터는 소문자입니다.
  2. 다음 요소는 단일 숫자 또는 대문자 문자와 하위 케이스 문자입니다.
  3. 마지막 캐릭터는 대문자 일 수 있습니다.

여기에 있습니다 단편 이 동선을 설명합니다. 다음 요소가 유효합니다.

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

내 문제를 해결 한 Regexp (Fitnesse DBFIT Web Service에서 인정할 디렉토리를 올바르게 명명 한 디렉토리)는 다음과 같습니다.

(^[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]$) 

나는이 특정 Camelcase 규칙을 리버스 엔지니어링했습니다.

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

Adam Crume 's Regex는 가깝지만 예를 들어 일치하지 않습니다. IFoo 또는 HTTPConnection. 다른 사람에 대해서는 확실하지 않지만 이것을 시도해보십시오.

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

숫자, i18n, 밑줄 등에 관한 Adam의 답변과 동일한 경고.

당신은 그것을 테스트 할 수 있습니다 여기.

이것은 그것을하는 것 같습니다 :

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

루비 단위 테스트를 포함 시켰습니다.

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 Upper Camel Case와 같은 것을 고려하고 싶다면 선행 밑줄을 추가 할 수 있습니다.

@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 Regex.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top