簡體   English   中英

如何使用正則表達式對此進行標記?

[英]How can I tokenize this with a regex?

假設我有如下字符串:

OneTwo
ThreeFour
AnotherString
DVDPlayer
CDPlayer

除了“ DVDPlayer”和“ CDPlayer”外,我知道如何標記駝峰式的。 我知道我可以手動標記它們,但是也許您可以向我展示可以處理所有情況的正則表達式?

編輯:預期的令牌是:

OneTwo -> One Two
...
CDPlayer -> CD Player
DVDPlayer -> DVD Player

看看我對.NET的回答-如何將以“大寫”分隔的字符串拆分為數組?

正則表達式如下所示:

/([A-Z]+(?=$|[A-Z][a-z])|[A-Z]?[a-z]+)/g

可以對其稍加修改,以搜索駝峰式令牌,方法是將$替換$ \\b

/([A-Z]+(?=\b|[A-Z][a-z])|[A-Z]?[a-z]+)/g

試試這個正則表達式:

[A-Z](?:[a-z]+|[A-Z]*?(?=[A-Z][a-z]|\b))

正則表達式

([A-Z]+[a-z]*)([A-Z][a-z]*)

假設您所有的字符串都長2個單詞,而第二個單詞不像DVD,則可以執行您想要的操作。

也就是說,它適用於您的示例,但可能不適用於您實際嘗試執行的操作。

這是我的嘗試:

([A-Z][a-z]+)|([A-Z]+(?=[A-Z][a-z]+))

嘗試非貪婪的眼光。 令牌是一個或多個大寫字符,后跟零個或多個小寫字符。 當下兩個字符為大寫和小寫時,令牌將終止-匹配此部分可以使用非貪婪匹配。 這種方法有局限性,但應適用於您提供的示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM