python - RE.将一个单元格中的任意两个值与另一个单元格匹配
问题描述
我目前正在尝试匹配两个不同电子表格中的两个单元格,到目前为止我可以做到,但现在我遇到一个问题,即一个单元格中有多个值,我想将单元格中的两个出现与一个单元格匹配有大量的信息。
例如:
(标题)- 数据 A 单元格:汽车型号变化 90-92
(年)- 数据 B 单元格:1990|1991|1992|1993|1994|1995|1996|1997|1998|1999
import re
if re.match(year, title):
print("Success")
但我想尝试匹配标题中数据 B 的任意两个值,但不确定解决问题的最佳方法。
解决方案
您可以动态构建您的模式,例如
p = "|".join([x[2:] for x in year.split("|")])
rx = re.compile(rf'(?s)\b(?:{p})\b.*?\b(?:{p})\b')
请参阅正则表达式演示,仅当它在字符串中找到两次出现的两位数年份时才会匹配。图案细节:
(?s)
-re.S
或re.DOTALL
允许.
匹配换行符的内联修饰符标志\b(?:90|91|92|93|94|95|96|97|98|99)\b
-90
,91
..99
作为一个整体.*?
- 任何 0+ 个字符,尽可能少\b(?:90|91|92|93|94|95|96|97|98|99)\b
-90
,91
..99
作为一个整体
import re
titles = [r'Car Model Variation 90-92',r'Car Model Variation 90']
year = r'1990|1991|1992|1993|1994|1995|1996|1997|1998|1999'
p = "|".join([x[2:] for x in year.split("|")])
rx = re.compile(rf'(?s)\b(?:{p})\b.*?\b(?:{p})\b')
for title in titles:
print ( f"'{title}' =>", bool(rx.search(title)) )
输出:
'Car Model Variation 90-92' => True
'Car Model Variation 90' => False
推荐阅读
- npm - 将入口点更改为 npm 依赖项
- sql-server - 从 Visual Basic api 读取 SQL Server 存储过程
- angular - Angular 6 SASS 嵌套在模块级别不起作用
- android - 房间迁移失败回退android
- r - 无法为 GPU 编译/安装 LightGBM
- java - Eclipse Java 8 错误:无法解析标签
- laravel - 多个详细信息行加符号?
- php - 来自mysql的照片名称没有显示替代品
- python - 使用多处理 -Pool- 和 -sklearn-,代码运行但核心不显示任何工作
- python - Python:如何确定类中属性的类型?