這裏有一個關於CamelCase regex的問題。結合tchrist post我想知道什麼是正確UTF-8駝峯。在Perl中駝峯(WikiWord)Utf8正確的正則表達式
與(布萊恩·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
- 開始用大寫字母
- 可選任何
- 小寫字母或數字或下劃線
- 可選任何
- 大寫字母
- 可選任何
請,不標記爲重複,因爲它不是。 original question(和答案)只認爲ascii。
別名也就是說,你已經開始與一個真正奇怪的正則表達式;我認爲它與簡單的'/ \ b [AZ] + [az] [A-Za-z] * \ b /'不同,它與任何不同的東西都不相同(一個「單詞」僅由字母組成,以大寫字母幷包括至少一個小寫字母)(更新:我錯了,原始正則表達式至少需要三個字母。) – ysth 2011-06-12 16:25:14
無論如何,請不要以ASCII正則表達式開頭;開始儘可能準確定義你想要匹配什麼 – ysth 2011-06-12 16:29:01
更新了問題 - (我希望是足夠的)精確定義 – jm666 2011-06-12 17:02:57