Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python正则表达式匹配字符串,但不应匹配_Python_Regex - Fatal编程技术网

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开头,而字符串则不是。这难

我完全不知道这个正则表达式如何匹配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开头,而字符串则不是。这难道不应该简单地取消一场比赛的资格吗?

您需要分组,最好是不捕获,以供选择:

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公里代表