匹配一组字符之前的所有内容,但如果它们不存在,则匹配所有内容



我有一系列字符串,其中一些字符串末尾有一个年份字符串,格式为-2022。我希望将所有内容与 4 位年份字符串之前-匹配,但如果没有年份,那么我想返回整个字符串。以下:

import re
x = "itf-m15-cancun-15-men-2022"
re.search(r"^.+?(?=-dddd)", x).group()

让我'itf-m15-cancun-15-men'我正在寻找。但是,以下几点:

import re
x = "itf-m15-cancun-15-men"
re.search(r"^.+?(?=-dddd)", x).group()

错误,因为未返回任何结果。如何捕获 4 位年份字符串之前的所有内容,但不包括-,或者如果年份字符串不存在,则返回整个字符串?

在展望中添加或结束|$

^.+?(?=-d{4}|$)

在正则表达式101观看演示

或者,可以在此处使用显式贪婪交替,就像本演示中一样。

通过在(?=-dddd)后添加一个?来使成为条件。(在JavaScript中测试)

/^.+?(?=-dddd)?$/

最新更新