python最后一个单词_Python正则表达式,匹配最后一个单词

本文讨论如何在Python中使用正则表达式从由大写字母开始的单词字符串中提取最后一个单词,例如'HelloWorldToYou'。通过修改正则表达式模式,最终找到了解决方案,能够正确捕获包括最后一个单词在内的所有单词。
摘要由CSDN通过智能技术生成

我有以下问题.我希望找到一个通常看起来像这样的字符串中的所有单词

HelloWorldToYou

请注意,每个单词都大写为开头,后跟下一个单词,依此类推.

我想从中创建一个单词列表.所以最终的预期输出是一个看起来像的列表

['Hello','World','To','You']

在Python中,我使用了以下内容

mystr = 'HelloWorldToYou'

pat = re.compile(r'([A-Z](.*?))(?=[A-Z]+)')

[x[0] for x in pat.findall(mystr)]

['Hello', 'World', 'To']

但是,我无法捕捉到“你”的最后一个字.有办法解决这个问题吗?

提前致谢

解决方法:

使用$替换:

import re

mystr = 'HelloWorldToYou'

pat = re.compile(r'([A-Z][a-z]*)')

# or your version with `.*?`: pat = re.compile(r'([A-Z].*?)(?=[A-Z]+|$)')

print pat.findall(mystr)

输出:

['Hello', 'World', 'To', 'You']

正则表达式解释:

>([A-Z] [a-z] *) – 匹配的捕获组

> [A-Z]一封大写的英文字母

> [a-z] * – 可选的小写英文字母数

-要么-

>.*? – 懒惰地匹配换行符以外的任何字符

如果我们使用[a-z] *,可以省略前瞻,但如果使用.* ?,则使用它:

>(?= [A-Z] | $) – 最多为大写英文字母(我们实际上可以删除),或字符串结尾($).

如果您不使用预见版本,您甚至可以删除捕获组以获得更好的性能和use finditer:

import re

mystr = 'HelloWorldToYou'

pat = re.compile(r'[A-Z][a-z]*')

print [x.group() for x in pat.finditer(mystr)]

标签:python,regex,list

来源: https://codeday.me/bug/20190612/1222352.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值