python - Python 正则表达式匹配包含两个或更少 o 字符的空格分隔的单词
问题描述
我是 python 新手,正在尝试解决一些问题(以学习方式)。
我想匹配包含两个或更少 o 字符的空格分隔的单词。
这就是我实际所做的:
import re
pattern = r'\b(?:[^a\s]*o){1}[^a\s]*\b'
text = "hop hoop hooop hoooop hooooop"
print(re.findall(pattern, text))
当我运行我的代码时,它确实匹配字符串中的所有单词。有
什么建议吗?
解决方案
您可以使用
import re
pattern = r'(?<!\S)(?:[^\so]*o){0,2}[^o\s]*(?!\S)'
text = "hop hoop hooop hoooop hooooop"
print(re.findall(pattern, text))
# Non regx solution:
print([x for x in text.split() if x.count("o") < 3])
请参阅Python 演示。两者都有['hop', 'hoop']
。
正(?<!\S)(?:[^\so]*o){0,2}[^o\s]*(?!\S)
则表达式匹配
(?<!\S)
- 左侧空白边界(?:[^\so]*o){0,2}
- 零、一或两次出现除空格和字符之外的任何零个或多个字符o
,然后是一个o
字符[^o\s]*
o
- 除了和空格之外的零个或多个字符(?!\S)
- 右侧空白边界
推荐阅读
- google-apps-script - replacetext 反斜杠括号不起作用
- java - 跟踪过去 15 分钟内的触摸事件数
- android - 中文设备上的 WebView 忽略强制设置的视图大小
- javascript - 我对嵌套查找的 mongodb 聚合函数有问题
- flutter - 即使在删除 Permission Handler Plugin 后,Flutter App 仍在请求权限
- python-3.x - python3中的嵌套循环
- python - 给定一列一行作为坐标填充数据框
- java - 模拟 HttpHeaders 抛出 NullPointerException
- python - 将一个数组的值映射到另一个数组
- javascript - 如果用户直接将其输入 URL,如何处理存在字节的 React 中的路由可能没有数据