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.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
我目前正在尝试匹配两个不同电子表格中的两个单元格,到目前为止我可以做到这一点,但现在我遇到了一个问题,一个单元格中有多个值,我想匹配单元格与包含大量信息的单元格。
例如:
(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.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