Python正则表达式匹配字符串,但不应匹配
我完全不知道这个正则表达式如何匹配python中的这个字符串。有人能理解吗Python正则表达式匹配字符串,但不应匹配,python,regex,Python,Regex,我完全不知道这个正则表达式如何匹配python中的这个字符串。有人能理解吗 import re regex = "^PHP/5.\\{3|2\\}.\\{1|2|3|4|5|6|7|8|9|0\\}\\{1|2|3|4|5|6|7|8|9|0\\}$" ua = 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)' re.compile(regex).search(ua) 正则表达式以PHP开头,而字符串则不是。这难
import re
regex = "^PHP/5.\\{3|2\\}.\\{1|2|3|4|5|6|7|8|9|0\\}\\{1|2|3|4|5|6|7|8|9|0\\}$"
ua = 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)'
re.compile(regex).search(ua)
正则表达式以PHP开头,而字符串则不是。这难道不应该简单地取消一场比赛的资格吗?您需要分组,最好是不捕获,以供选择:
PHP/5.\\{(?:3|2)\\}.\\{(?:1|2|3|4|5|6|7|8|9|0)\\}\\{(?:1|2|3|4|5|6|7|8|9|0)\\}$
^^ ^ ^^ ^ ^^ ^
另一方面,您将交替使用整个表达式:
PHP/5.\{3或
2或
\\}.\\{1或
2或
3或
4或
找到5个匹配项!
思考和嵌套条件ifa&&b | | c{}。您的正则表达式失败,因为|在这里起着重要的作用
^PHP/5.\{3
2\\}\\{
依此类推。因为or匹配4 | 5 | 6中的5,所以它实际上匹配Mozilla/5.0中的5
您可以看到在线演示和相同的解释
谢谢你帮我打10公里代表