Python 具有连续变量的正则表达式字符串
我对regex正则表达式相当陌生,需要一些帮助来构造字符串。我大部分都能理解,但当我需要匹配的文本后面有变量和可选短语时,我就被难住了 假设文本的格式类似于turn$1[the]lights,其中$1是我想要的变量,而可以包含或忽略。我已经尝试了以下“turn.+?”:用于打开灯光的?\s*灯光:Python 具有连续变量的正则表达式字符串,python,regex,variables,optional-parameters,optional-variables,Python,Regex,Variables,Optional Parameters,Optional Variables,我对regex正则表达式相当陌生,需要一些帮助来构造字符串。我大部分都能理解,但当我需要匹配的文本后面有变量和可选短语时,我就被难住了 假设文本的格式类似于turn$1[the]lights,其中$1是我想要的变量,而可以包含或忽略。我已经尝试了以下“turn.+?”:用于打开灯光的?\s*灯光: >>> re.match("turn (.+) (?:the)?\s*lights", "turn on lights").groups() ("on",) 但是,当我包含并尝试匹
>>> re.match("turn (.+) (?:the)?\s*lights", "turn on lights").groups()
("on",)
但是,当我包含并尝试匹配打开灯时,我将使用作为变量
>>> re.match("turn (.+) (?:the)?\s*lights", "turn on the lights").groups()
("on the",)
这是可以通过正则表达式库实现的吗?如果问题不清楚,我深表歉意,提前谢谢 您只需使用惰性量词即可:
turn (.+?) (?:the)?\s*lights
如果我理解正确,您正在尝试编写一个正则表达式,该正则表达式将匹配包括但不限于以下内容的短语: 开灯 关灯 开灯 关灯 执行此操作的正则表达式可以这样编写: 转身?灯光 按部分细分: 转身:直截了当。 .+?:捕获一个或多个任意字符,但?指示此操作不会变得贪婪。你可以读到关于贪婪的书 这个是用括号括起来的吗?应用于整个单词,使整个单词可选。这也将创建一个捕获组,但您可以安全地忽略这一事实。 灯光:简单明了。
++又好又快。。!我不确定我是否明白你的意思。。但我想你必须问OP的这个问题。同样基于你的演示,让我说是的,你的模式是有效的:-抱歉@Shafizadeh:问题不在于你,而在于OP这个答案是否有效。伟大的答案,我感谢详细的解释!