您可以动态构建您的模式,例如
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
作为一个整体
查看完整的 Python 演示:
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