假设我希望有一个正则表达式可以匹配 "Sent from my iPhone" 和 "Sent from my iPod",该怎么写呢?
我尝试了以下的表达式:
re.compile("Sent from my [iPhone]|[iPod]")
但似乎不起作用。
假设我希望有一个正则表达式可以匹配 "Sent from my iPhone" 和 "Sent from my iPod",该怎么写呢?
我尝试了以下的表达式:
re.compile("Sent from my [iPhone]|[iPod]")
但似乎不起作用。
re.compile("Sent from my (iPhone|iPod)")
在这里查看实例。
Sent from my iPhone
或Sent from my iPod
,而不是单独的字符串iPhone
或iPod
。虽然我的答案和re.compile("(iPhone|iPod)")
都可以在字符串Red iPhone
中找到匹配项,但我的答案要求字符串在iPhone
或iPod
之前必须有Sent from my
。请注意,"匹配"和"捕获"是有区别的,而问题仅问及"匹配"。另外,正则表达式并不输出任何内容,所以我不确定你的意思。 - Paulmatch.group(0) == 'Sent from my iPhone'
,但我的答案还允许你使用 match.group(1) == 'iPhone'
单独获取已捕获部分 (如果你想要的话),而另一个答案中的 match.group(1)
将引发 IndexError: no such group
。 - Paul?:
而不是 :?
。 - Bálint Sassre.compile("Sent from my (?:iPhone|iPod)")
如果你需要捕获匹配结果,去掉?:
。顺便说一下,你的正则表达式无法工作是因为你正在测试 i、P、h、o、n 或 e 中的一个字符或 i、P、o、d 中的一个字符。