RE.Match 一个单元格中的任意两个值与另一个单元格

RE.Match any two values in a cell with another cell

我目前正在尝试匹配两个不同电子表格中的两个单元格,到目前为止我可以做到这一点,但现在我遇到了一个问题,一个单元格中有多个值,我想匹配单元格与包含大量信息的单元格。

例如:

(title) - 数据 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')

参见the regex demo,只有在字符串中发现两位数年份出现两次时才会匹配。图案详情:

  • (?s) - re.Sre.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 整个词

参见full Python demo:

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