正则表达式将标签分成单词

时间:2017-07-08 14:49:57

标签: python regex

我正在尝试提出一个正则表达式,它会正确地将主题标签拆分为单词。例如:

XP => XP
ACar =>一辆车 GoodCar =>好车 OnceUponATime =>黄飞鸿 LoveXP =>爱XP
AppleVsXP => Apple Vs XP
JamesBond007 =>詹姆斯邦德007

编辑: 我试过了

expanded = ' '.join(re.findall(r"[A-Z][^A-Z]*", self.text))

什么是更强大的方法来解决上述所有用例?

2 个答案:

答案 0 :(得分:3)

你可以通过这个表达式完成这个,这已经足够了:

expanded = " ".join([a for a in re.split('([A-Z][a-z]+)', i) if a])

它给出了以下结果:

XP
A Car
Good Car
Once Upon A Time
Love XP
Apple Vs XP
James Bond 007

希望这有用。

答案 1 :(得分:1)

您可以定义多个模式以匹配单独的单词 - 大写字符后跟一系列小写字符,一系列数字,一系列不带小写字符的大写字符等等 - 然后将它循环到你的字符串上:

test_tags = ["XP", "ACar", "GoodCar", "OnceUponATime", "LoveXP", "AppleVsXP", "JamesBond007"]
for tag in test_tags:
    print("{} => {}".format(tag, " ".join(split_hashtag(tag))))

如果您使用代码进行测试:

{{1}}

你得到:

XP => XP
ACar => A Car
GoodCar => Good Car
OnceUponATime => Once Upon A Time
LoveXP => Love XP
AppleVsXP => Apple Vs XP
JamesBond007 => James Bond 007