python - 查找字符串中所有占位符的pythonic方法
问题描述
我有一个字符串,其中包含占位符,由“%”包围。我想获得这些占位符的列表。我试过这个正则表达式
m = re.search('%s(.*)%s' % ('\%', '\%'), message)
在以下字符串上
black %brown% fox jumped over the %lazy% dog
我希望得到
['brown', 'lazy']
但相反,我得到
'brown% fox jumped over the %lazy'
解决方案
默认情况下,搜索是在贪婪模式下进行的:它将尝试找到最长的匹配文本。
你有两个解决方案:
执行非贪婪搜索(正如 JvdV 和 xdhmoore 在评论部分指出的那样),在:
?
旁边添加一个*
:(.*?)
编辑您的正则表达式以禁止
%
占位符内的任何内容,使用[^%]
代替.
:m = re.search('%([^%]*)%', message)
注意:我删除了百分比字符串格式。我相信你想参数化占位符边界,但现在我可能会同意 chepner 的意见,我删除了它并在原地编写了普通的正则表达式。
推荐阅读
- python - Pandas - 创建多个过滤器并应用于数据框
- android - 如何将相框图像放入firebase,然后选择要在其中覆盖相框的照片?
- android - Android ViewModel MutableLiveData 多次更新
- reactjs - 使用 Firebase ,使用 react hooks ,对象作为 React child 无效,(如果你的意思是)渲染一组孩子,请改用数组
- rest - Outlook oAuth - 检索联系人列表
- java - jUnit如何测试仅将数据从实体设置为dto的方法
- javascript - 如何在选中的Angular 8复选框上加入逗号分隔字符串中的值
- ruby-on-rails - 如何在管理 gem 中关联 Ancestry gem 数据
- javascript - Uncaught exception in AWS lambda javascript
- ios - Implement protocol variable conforming to single protocol as variable conforming to several protocols