所以我有这个字符串:
sockcooker!~shaz@Rizon-AC7BDF2F.dynamic.dsl.as9105.com !~shaz@ PRIVMSG #Rizon :ohai. New here. registered 10 mins ago, have not got an email. Addy is correct. My email is working fine.
我希望正则表达式找到!~shaz @所以我用这个r“!。+ @” 但后来发现了这个
!~shaz@Rizon-AC7BDF2F.dynamic.dsl.as9105.com !~shaz@
我记得。我希望它能找到它们,并用一定的字母代替它们。对此有任何帮助 如果你能给我任何优秀的Python正则表达式,我会很感激:D
答案 0 :(得分:4)
默认情况下,量词在本质上是贪婪的,他们会尝试尽可能多地匹配。这就是为什么你的正则表达式匹配到最后@
。
您可以使用不情愿的量词(在?
之后添加+
)停在第一个@
:
r"!.+?@"
或者您也可以使用negated
字符类,它会在第一个@
处自动停止:
r"![^@]+"
选择更容易理解的内容。
答案 1 :(得分:1)
你想要使用不合适的比赛。有两种方式(和python都支持)。后者更灵活:
r"![^@]+"
r"!.+?@
?
使.+
无效,因此它会停在第一个“@”而不是最后一个。