假设我有如下字符串:
OneTwo
ThreeFour
AnotherString
DVDPlayer
CDPlayer
除了“DVDPlayer”和“CDPlayer”之外,我知道如何标记驼峰式的。我知道我可以手动标记它们,但也许你可以给我看一个可以处理所有情况的正则表达式?
编辑:预期的令牌是:
OneTwo -> One Two
...
CDPlayer -> CD Player
DVDPlayer -> DVD Player
假设我有如下字符串:
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][a-z]+))
正则表达式
([A-Z]+[a-z]*)([A-Z][a-z]*)
假设您的所有字符串都是 2 个单词长并且第二个单词不像 DVD,那么您会做您想做的事情。
即它适用于您的示例,但可能不适用于您实际尝试做的事情。
尝试不贪婪地向前看。标记将是一个或多个大写字符,后跟零个或多个小写字符。当接下来的两个字符是大写和小写时,令牌将终止 - 匹配此部分是可以使用的非贪婪匹配。这种方法有局限性,但它应该适用于您提供的示例。