正则表达式用大写和低字符分割字符串

时间:2013-07-07 12:48:55

标签: java regex hashtag

我试图分开:TwitterHashtagIsVeryCOMPLICATED

分割后的字符串,如:Twitter Hashtag Is Very COMPLICATED

我可以使用正则表达式吗?

非常感谢任何建议。

2 个答案:

答案 0 :(得分:5)

这应该有效:

str.split("(?<=[a-z])(?=[A-Z])")

这个想法是对小写字母使用零长度lookbehind,对大写字母使用零长度前瞻。此构造仅匹配camel case字符串中的“单词分隔符”。

这是demo on ideone

答案 1 :(得分:2)

编辑 强烈受到dasblinkenlight的回答(+1为此)的启发。 我只在这里更改为Unicode类别以支持Unicode:

String test = "TwitterHashtagIsVeryCOMPLICATED";
for (String splitted: test.split("(?<=\\p{Ll})(?=\\p{Lu})")) {
    System.out.println(splitted);
}

输出:

Twitter
Hashtag
Is
Very
COMPLICATED