这里有一个关于CamelCase regex的问题。结合tchrist post,我想知道什么是正确的utf-8 CamelCase。
从(brian d foy's)正则表达式开始:
/
\b # start at word boundary
[A-Z] # start with upper
[a-zA-Z]* # followed by any alpha
(?: # non-capturing grouping for alternation precedence
[a-z][a-zA-Z]*[A-Z] # next bit is lower, any zero or more, ending with upper
| # or
[A-Z][a-zA-Z]*[a-z] # next bit is upper, any zero or more, ending with lower
)
[a-zA-Z]* # anything that's left
\b # end at word
/x并修改为:
/
\b # start at word boundary
\p{Uppercase_Letter} # start with upper
\p{Alphabetic}* # followed by any alpha
(?: # non-capturing grouping for alternation precedence
\p{Lowercase_Letter}[a-zA-Z]*\p{Uppercase_Letter} ### next bit is lower, any zero or more, ending with upper
| # or
\p{Uppercase_Letter}[a-zA-Z]*\p{Lowercase_Letter} ### next bit is upper, any zero or more, ending with lower
)
\p{Alphabetic}* # anything that's left
\b # end at word
/x标记为#的行有问题。
此外,当假设大于数字和下划线时,如何修改正则表达式与小写字母等效,因此W2X3是一个有效的CamelCase单词。
更新: (ysth评论)
下一个,
any:意为“大写或小写或数字或下划线”。
正则表达式应该与CamelWord、CaW匹配。
以大写letter
请不要标记为重复,因为它不是。 (和答案)只考虑ascii。
发布于 2011-06-12 18:19:13
我真的不知道你想做什么,但这应该更接近你的初衷。不过,我还是不知道你用它做什么。
m{
\b
\p{Upper} # start with uppercase code point (NOT LETTER)
\w* # optional ident chars
# note that upper and lower are not related to letters
(?: \p{Lower} \w* \p{Upper}
| \p{Upper} \w* \p{Lower}
)
\w*
\b
}x永远不要使用[a-z]。事实上,不要使用\p{Lowercase_Letter}或\p{Ll},因为它们与更理想和更正确的\p{Lowercase}和\p{Lower}不一样。
请记住,\w实际上只是一个别名
[\p{Alphabetic}\p{Mark}\p{Decimal_Number}\p{Letter_Number}\p{Connector_Punctuation}]https://stackoverflow.com/questions/6322906
复制相似问题