我对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