我正在尝试提出一个正则表达式,它会正确地将主题标签拆分为单词。例如:
XP => XP
ACar =>一辆车
GoodCar =>好车
OnceUponATime =>黄飞鸿
LoveXP =>爱XP
AppleVsXP => Apple Vs XP
JamesBond007 =>詹姆斯邦德007
编辑: 我试过了
expanded = ' '.join(re.findall(r"[A-Z][^A-Z]*", self.text))
什么是更强大的方法来解决上述所有用例?
答案 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