これはCamelCase regexに関する質問です。tchrist 投稿の組み合わせで、正しいutf-8 CamelCase は何か疑問に思っています。
(brian d foy の) 正規表現から始めます。
/
\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 が有効なキャメルケースの単語であると仮定した場合の正規表現の変更方法。
更新: (ysth コメント)
次のために、
any
: 「大文字または小文字または数字またはアンダースコア」を意味します
正規表現は CamelWord、CaW と一致する必要があります
- 大文字で始める
- オプション
- 小文字または数字またはアンダースコア
- オプション
- 大文字
- オプション
重複していないため、重複としてマークしないでください。元の質問(および回答も)はASCIIのみを考えていました。