python - 正则表达式 re.findall() 搜索以提取以 # 和邮政编码开头的单元
问题描述
我正在使用 Python 3.6 并尝试使用 re.findall() 提取一些以 # 开头的字符串和一些邮政编码的构建单元(按照在此处通过使用 regex 从 python 中的自由格式文本中提取电话号码获得的解释)。我不确切知道该结构是如何工作的,也没有得到我正在寻找的结果。这是我的代码
string='Road #10-13, Tree 26739 #23.04 934047 Holiday'
re.findall(r'[#][0-9(\)][0-9 ,\.\-\(\)]{8,}[0-9 ,\(\)]', string)
基本上我想获得类似的东西
['#10-13,','#23.04 934047 ']
但我之所以得到,是因为#10-13 后面有一个逗号:
['#23.04 934047 ']
我想在查询中更改的是字符串以 0-9 或“,”之间的数字结尾。因为即使我更改字符串并在 #23.04 之后添加一个“,”,我仍然会得到相同的结果。有人也可以向我解释 {8,} 的含义吗?
解决方案
您可以使用前瞻。即,提取以 an 开头的部分字符串,#
然后是任何内容,只要有一个非单词字符,例如空格或 , 后面紧跟字母
re.findall("#.+?(?=\\W+[A-Z])",string)
['#10-13', '#23.04 934047']
推荐阅读
- python - Python doctest 说失败但返回正确的值
- oauth-2.0 - Amadeus 访问令牌错误,缺少必需的 grant_type 表单参数
- json - 如何在 Swift 中为发布请求准备 JSON?
- ansible - 无法检索存储库的金属链接:epel/x86_64。请验证其路径并重试
- python - 在python中修改列表项
- garbage-collection - JDK8:老一代对象何时被标记为不可访问?
- r - 多图校正
- nuke-build - Nuke Build 声明了一个作为构建的一部分获取的工具
- c++ - 获取“表达式:无法取消引用值初始化向量迭代器”的调试断言
- python - 冷却映射 | 不和谐.py