我对regex(正则表达式)还不太熟悉,需要一些帮助来构造字符串。我理解它的大部分,但当我需要匹配的文本后面有变量和一个可选短语时,我被难住了。
假设文本的格式类似于“turn$1[the]lights”,其中“$1”是我想要的变量,而“the”可以包含或省略。我试过下面的广告词,“转(++)(?:那个?\s*lights”,用于“打开灯光”:

>>> re.match("turn (.+) (?:the)?\s*lights", "turn on lights").groups()
("on",)

但是当我包含“the”并试图匹配“turn on the lights”时,我得到“on the”作为变量。
>>> re.match("turn (.+) (?:the)?\s*lights", "turn on the lights").groups()
("on the",)

这是可以用regex库实现的吗?如果问题不清楚,我深表歉意,提前谢谢!

最佳答案

你只需要使用一个懒散的量词:

turn (.+?) (?:the)?\s*lights

RegEx Demo

07-24 09:43
查看更多