只提取首字母大写的全字

时间:2018-05-06 19:46:07

标签: python regex python-3.x

我有一个文本文件需要在这里进行分析,我感兴趣的只是第一个字母大写的整个单词,

例如:测试字符串:Everyday HOLDS the poSSibility Of A Miracle

我想抓拍:Everyday Of A Miracle

我目前正在尝试用Python构建我的正则表达式,奇怪的是,我的正则表达式只能捕获被捕获的第一个整个单词。

测试字符串:Everyday HOLDS the poSSibility Of A Miracle

我的正则表达式:^([A-Z])?([a-z])+

捕获:Everyday

我在这里缺少什么?

2 个答案:

答案 0 :(得分:4)

不是将正则表达式锚定在字符串的开头,而是使用边界检查:

import re
s = 'Everyday HOLDS the poSSibility Of A Miracle'
new_s = ' '.join(re.findall(r'\b[A-Z][a-z]+|\b[A-Z]\b', s))

输出:

'Everyday Of A Miracle'

答案 1 :(得分:0)

没有正则表达式(仅当单词由空格分隔时):

>>> s='Everyday HOLDS the poSSibility Of A Miracle'
>>> [x for x in s.split() if x.title()==x]
['Everyday', 'Of', 'A', 'Miracle']

请注意,您还可以使用re.split分割任何非字母字符。