假設我有一個字符串,如下列:我怎樣才能用正則表達式來標記這個?
OneTwo
ThreeFour
AnotherString
DVDPlayer
CDPlayer
我知道如何來標記駝峯的,除「DVD播放機」和「CD播放器」。我知道我可以手動記號化它們,但也許你能告訴我一個正則表達式,可以處理所有的情況?
編輯: 預期令牌是:
OneTwo -> One Two
...
CDPlayer -> CD Player
DVDPlayer -> DVD Player
假設我有一個字符串,如下列:我怎樣才能用正則表達式來標記這個?
OneTwo
ThreeFour
AnotherString
DVDPlayer
CDPlayer
我知道如何來標記駝峯的,除「DVD播放機」和「CD播放器」。我知道我可以手動記號化它們,但也許你能告訴我一個正則表達式,可以處理所有的情況?
編輯: 預期令牌是:
OneTwo -> One Two
...
CDPlayer -> CD Player
DVDPlayer -> DVD Player
看我對這個問題,.NET - How can you split a 「caps」 delimited string into an array?答案。
正則表達式如下:
/([A-Z]+(?=$|[A-Z][a-z])|[A-Z]?[a-z]+)/g
它可以通過更換被稍微修改,以便尋找駱駝套管令牌時,$
與\b
:
/([A-Z]+(?=\b|[A-Z][a-z])|[A-Z]?[a-z]+)/g
後者幾乎等同於Gumbo的答案。唯一的區別是,這也接受以小寫開頭的單詞。 「camelCase」 - > [「camel」,「Case」] – 2009-09-07 12:21:45
嘗試提前一非貪婪的樣子。令牌可以是一個或多個大寫字符,後跟零個或多個小寫字符。在接下來的兩個字符是一個大寫和小寫的令牌將終止 - 匹配這部分是可以使用什麼非貪婪匹配。這種方法有侷限性,但它應該適用於您提供的示例。
+1,因爲你先到那裏 - 儘管我猜想一個例子可能會把你推到「有幫助」的排名:) – 2009-09-07 14:17:51
試試這個正則表達式:
[A-Z](?:[a-z]+|[A-Z]*?(?=[A-Z][a-z]|\b))
正則表達式
([A-Z]+[a-z]*)([A-Z][a-z]*)
會做你想要的,假設你所有的字符串都是2個字長,第二個字不像DVD。
I.e.它會適用於你的例子,但也許不適合你實際想要做的事情。
這裏是我的嘗試:
([A-Z][a-z]+)|([A-Z]+(?=[A-Z][a-z]+))
那你在這種情況下會發生什麼記號? – Gumbo 2009-09-07 12:05:31
一,二;三四;另外,字符串; DVD播放機; CD,播放器 – Joey 2009-09-07 12:07:10