Python正则表达式OR

Hen*_*hiu 35 python regex

假设我想要一个匹配"从我的iPhone发送"和"从我的iPod发送"的正则表达式.我怎么写这样的表达?

我尝试过这样的事情:

re.compile("Sent from my [iPhone]|[iPod]") 
Run Code Online (Sandbox Code Playgroud)

但似乎没有用.

Pau*_*aul 62

re.compile("Sent from my (iPhone|iPod)")
Run Code Online (Sandbox Code Playgroud)

  • 甚至"从我的iP发送(:??hone | [ao] d)",其中也包括iPad. (24认同)
  • @lapinkoira输出什么?你是否真的认为这可以保证投票,当它适用于提出问题的人和发现它的其他人,但不适用于你使用它与原始问题无关的特定方式? (6认同)
  • @lapinkoira我的回答与那里的字符串"iPhone"或"iPod"不匹配.它只会匹配`从我的iPhone发送'或'从我的iPod发送',就像OP想要的那样.匹配的内容与捕获的内容之间存在差异,OP仅询问匹配的内容.`re.compile("(iPhone | iPod)")`会在字符串`Red iPhone`中找到一个匹配,但我的回答没有,因为我的回答要求字符串在`之前'从我的`发送' `或'iPod`.顺便说一句,正则表达式不输出任何东西,所以我不确定你的意思. (4认同)
  • @ChrisTonkinson 在你的(有用!)评论中,`:?` 应该是 `?:` 。 (2认同)

Thi*_*ter 26

re.compile("Sent from my (?:iPhone|iPod)")
Run Code Online (Sandbox Code Playgroud)

如果您需要捕获匹配项,请删除?:.

Fyi,你的正则表达式没有用,因为你正在测试i,P,h,o,n,e中的一个字符或者i,P,o,d中的一个字符.

  • 不,他们正在测试"从我发送",然后测试其中一个字符i,P,h,o,n或e; 或其中一个字符i,P,o或d.OR的垂直条是最高范围,左侧是"从我发送",但右侧没有. (3认同)