python - 如果字符串有 X 个以 @#$ 开头的单词,则 Python 正则表达式匹配:
问题描述
我想要做的是匹配字符串,如果该字符串包含 X 数量(比如说 5)以 @#$: 字符开头的单词。
假设 X 为 5 的示例:
@someword someotherword anotherword word1 word2 word3 => false
@someword :someotherword #anotherword $word1 word2 word3 => false
@someword :someotherword #anotherword $word1 #word2 $word3 => true
解决方案
假设这些符号仅在单词字符之前使用,您可以使用此正则表达式:
(?:]\B[@#$:]\w+[^@#$:]*){5}
代码:
>>> arr = ['@someword someotherword anotherword word1 word2 word3',
'@someword :someotherword #anotherword $word1 word2 word3',
'@someword :someotherword #anotherword $word1 #word2 $word3']
>>> reg = re.compile(r'(?:\B[@#$:]\w+[^@#$:\n]*){5}');
>>> for i in arr:
... print(reg.findall(i))
...
[]
[]
['@someword :someotherword #anotherword $word1 #word2 ']
\B
: 匹配\b
不匹配的地方。[@#$:]\w+
: 匹配 1+ 个以开头的单词字符[@#$:]
[^@#$:]*
: 匹配 0 个或多个不包含的字符[@#$:]
(...){5}
: 在当前输入中匹配 5 个
推荐阅读
- python - 如何通过 Restplus 获取对象列表?
- javascript - 无法解决导出的异步函数 NodeJS 的承诺
- php - 如何在 WordPress 中为帖子 ID 编写 WP_query
- java - java.net.connectexception 连接被拒绝(连接被拒绝):无法从 docker 容器连接到本地 rabbitmq
- javascript - 阅读价格受苦的价值观
- android - 在android studio中创建一个可以使用@语法访问的文件夹
- rest - 如何通过带有cookie的rest API使用CURL命令发送文件?
- spring-tool-suite - STS 3-9-10 版本 (Windows zip) 中 STS.exe 上的 HashMismatch
- visual-studio-code - 在 VSCode 中选择所有可见的当前选择
- python-3.x - 精度分数 - 类型错误:“列表”对象不可调用