python - 与 findall() 一起使用的正则表达式模式来定位 3 个字母的单词
问题描述
所以我有一些代码可以产生正确的结果,但是代码太具体了。我希望它更通用,以便我可以使用 re.findall() 从“s2”中提取所有 3 个字母的单词(例如 DOG)。
在下面的代码中,问题是当我打印 m[0:3] 时,我正在挑选三个字母单词的三个单词。换句话说,我的代码查找 3+ 个字母的单词,我必须挑选,而我只想要 3 个字母的单词——从一开始就没有更多,也没有更少。
list2 = 'A, k: it; hi! map@ LAP# rAp, home: LIFE; party! animals@'
m = re.findall(r'(\w{3,})', list2)
m[0:3]
我想得到 ['map', 'lap', 'rAP']。而且我希望代码将来能够保留任何其他 3 个,不多不少的字母词。
解决方案
您可以准确地查找三个单词字符,由单词边界包围:
import re
s2 = 'I, a: be; go! cat@ DOG# aRe, home: WORK; ninja! rules@'
m = re.findall(r'\b\w{3}\b', s2)
print(m)
# ['cat', 'DOG', 'aRe']
推荐阅读
- graphql - 具有多个嵌套解析器并将字段映射到参数的 GraphQL 查询
- javascript - 在 NodeJS 中使用 AWS.DynamoDB.DocumentClient 的排序键以子字符串开头的 get() 条目的正确语法是什么?
- flutter - 需要帮助追查:在 Flutter 中使用 Provider 构建时出现异常
- javascript - 如何获取 mp4 下载地址
- git - 尝试提交 git 时收到签名错误
- c - 结构指针到底是什么意思
- javascript - 从数组分配时,角度选择选项显示空白
- javascript - 使用 Where In 过滤数组 ElasticSearch 中项目的文档
- java - 我想在java中计算一个简单的右移,但我没有得到正确的答案?
- r - 创建新变量的未列出字符串操作仅对第一行执行?