python - 用于匹配 Python 列表中的特定模式的正则表达式
问题描述
说,我有以下代码:
import re
strings_of_text = ['data0', 'data23', 'data2', 'data55', 'data_mismatch', 'green']
strings_to_keep = []
expression_to_use = r'^\d{2}$|(?<=\s)\d{2}(?=\s)|(?<=\s)\d{2}$|^\d{2}(?=\s)'
for string in strings_of_text:
# If the string is data#
if (re.search(expression_to_use, string)):
strings_to_keep.append(string)
print(strings_to_keep)
我只关心添加带有模式“数据”的字符串,后跟一些数字。所以在这种情况下,我只想添加'data0', 'data23', 'data2', 'data55'
我怎样才能做到这一点?我想我需要,import re
但我不知道如何使用它。
我已阅读:Python 正则表达式仅查找两位数
但是当我尝试使用这个表达式修改我的正则表达式时
^\d{2}$|(?<=\s)\d{2}(?=\s)|(?<=\s)\d{2}$|^\d{2}(?=\s)
它不起作用......这就是我卡住的地方。我是使用正则表达式的新手,所以感谢所有提前发布的人
编辑:
这是我想要得到的结果:
print(strings_to_keep)
>>> ['data0', 'data23', 'data2', 'data55']
解决方案
在您的模式中,您使用了 4 个交替,但您没有考虑到这个词data
。
您可以改用re.match从字符串的开头开始匹配,并用于data\d+$
匹配后跟 1 个以上数字的数据,直到字符串的结尾:
import re
strings_of_text = ['data0', 'data23', 'data2', 'data55', 'data_mismatch', 'green']
strings_to_keep = []
expression_to_use = r'data\d+$'
for string in strings_of_text:
# If the string is data#
if (re.match(expression_to_use, string)):
strings_to_keep.append(string)
print(strings_to_keep)
您可能会继续使用过滤后的集合,而不是使用例如过滤器创建新集合:
import re
strings_of_text = ['data0', 'data23', 'data2', 'data55', 'data_mismatch', 'green']
strings_to_keep = []
expression_to_use = r'data\d+$'
strings_of_text = list(filter(lambda x: re.match(expression_to_use, x), strings_of_text))
print(strings_of_text)
结果
['data0', 'data23', 'data2', 'data55']
推荐阅读
- laravel - 在laravel中导入带有嵌套单元格的excel文件
- python - 我想在 python 中使用正则表达式从文件中提取基因边界(如 1..234、234..456),但每次使用此代码时,它都会返回空列表
- android - Square Reader SDK 演示(React Native / Mac)-错误:spawn ./gradlew ENOENT
- python - 添加 Z(通过 gcps 使用 gdal_translate 和 gdalwarp 进行地理配准时图像的高程)
- java - 我想从firebase实时数据库中显示recyclerview android上的数据..但我无法将动态数据加载到适配器数组中
- javascript - 在 li 的第 n 个元素中注入 Adsense
- python - 如何将变量值从一个函数渲染到烧瓶中的另一个函数,
- post - 有人帮助我,我不知道如何解决 Angular 9 中的这个错误,我使用假 json 服务器获取、放置、更新、删除使用 crud 方法
- javascript - 如何在没有实体框架的 dot net core MVC 应用程序的动态创建的 html 表中实现内联 crud 操作?
- html - “overflow-y”的滚动和下拉栏无法正常工作