如何找到所有驼峰格式文档中单词,正则表达式? 我只关心与领先的上骆驼的情况下 (即骆驼套管的话,其中的第一个字母是大写)。
Answer 1:
([A-Z][a-z0-9]+)+
假设英语。 如果你想让它可国际使用适当的字符类。 这将匹配的词语,如“这个”。 如果您希望只与至少两个首都匹配的话,只需要使用
([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]*
它匹配以大写字母开头,只包含字母和数字,并至少包含一个小写字母和至少一个其他大写字母串。
Answer 2:
较低的骆驼
此正则表达式包括数量,并实现由严格定义下的骆驼情况下 谷歌的Java风格指南正则表达式验证。
[a-z]+((\d)|([A-Z0-9][a-z0-9]+))*([A-Z])?
- 第一个字符是小写字母。
- 以下元件是一个单一的数或一个大写字符依次降低的情况下的字符。
- 最后一个字符可以是大写的。
这里是一个片段说明此正则表达式。 下面的元素是有效的。
xmlHttpRequest
newCustomerId
innerStopwatch
supportsIpv6OnIos
youTubeImporter
youtubeImporter
affine3D
上骆驼
相同的原理,用于较低骆驼壳体与总是起始大写字符的一个。
((\d)|([A-Z0-9][a-z0-9]+))*([A-Z])?
下面是说明此正则表达式的一个片段。 下面的元素是有效的。
XmlHttpRequest
NewCustomerId
InnerStopwatch
SupportsIpv6OnIos
YouTubeImporter
YoutubeImporter
Affine3D
Answer 3:
亚当Crume的正则表达式是接近,但不匹配,例如IFoo
或HTTPConnection
。 不知道别人,而是给这一个尝试:
\b[A-Z][a-z]*([A-Z][a-z]*)*\b
同样的警告,作为亚当回答有关数字,国际化,下划线等。
你可以测试一下这里 。
Answer 4:
(将由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
Answer 5:
这似乎做到这一点:
/^[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
Answer 6:
([A-Z][a-z\d]+)+
应该做上骆驼的伎俩。 您可以添加下划线开头到它,以及如果你仍然要考虑像_IsRunning上骆驼。
Answer 7:
刚刚修改的@ AdamCrume的建议之一:
([A-Z]+[a-z0-9]+)+
这将匹配IFrame
,但不是ABC
。 其他骆驼套管单词的匹配,如AbcDoesWork
,最重要的是, 它也匹配不具有至少另一个大写字母 ,例如简单的话语 Frame
。
您如何看待这个版本? 我失去了一些重要的情况下?
Answer 8:
([a-z0-9]+|[A-Z0-9]+[a-z0-9]*|[A-Z0-9][a-z0-9]*([A-Z0-9][a-z0-9]*)*)
java的正则表达式匹配骆驼字符串。
文章来源: Regex for CamelCased words with leading uppercase letter