查找以大写字母作为起始字母但前面没有空格的单词



我正在努力寻找在文本中查找单词的解决方案,单词必须以大写字母开头,但不能以空格开头。示例:

string1 = "MynameisStuartLittle"  # expected result ["Mynameis","Stuart","Little"]
string2 = "MynameisStuart Little Junior" # expected result ["Mynameis","Stuart"]
string3 = "My name is AlphredHitchcock" # expected result ["My","Hitchcock"]
result = re.findall(r"([^ ]([A-Z][a-z]+))",string1)
print(result)

我正在考虑的另一种替代解决方案是,通过SPACE分割文本,并使用regex r"单独检查每个单词;([A-Z][A-Z]+(";如果findall的长度大于1,那么这个词就符合我的结果。我正在寻找任何单一的正则表达式解决方案。

您可以使用负查找(?<!...):

import re
string1 = "MynameisStuartLittle"
string2 = "MynameisStuart Little Junior"
string3 = "My name is AlphredHitchcock"
print(re.findall(r"(?<! )[A-Z][a-z]*", string1)) # ['Mynameis', 'Stuart', 'Little']
print(re.findall(r"(?<! )[A-Z][a-z]*", string2)) # ['Mynameis', 'Stuart']
print(re.findall(r"(?<! )[A-Z][a-z]*", string3)) # ['My', 'Hitchcock']

相关内容

最新更新