python2.7中的REGEX

时间:2017-09-07 04:11:31

标签: python python-2.7

如果在python中匹配所有匹配,我似乎无法弄清楚如何编写正则表达式匹配:

  • {' ERROR_CODE':500}
  • {' ERROR_CODE':404}
  • {' ERROR_CODE':501}
  • {' ERROR_CODE':409}

我需要首先匹配{'ERROR_CODE':的正则表达式,然后可以是5XX OR 4XX,结束于}

我可以指定并使其工作,如何使其在整个范围400-499或500-599匹配。

// python snippet
err_pattern = re.compile("{\'ERROR_CODE\': 500}|{\'ERROR_CODE\': 404}")
if all(err_pattern.match(str(values)) for values in self.set.values()):
    output.append('All are 4XX and 5XX')

任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:1)

  

如何使其在整个范围400-499或500-599匹配。

4和5是常数,第二和第三个数字都是0-9位数。因此你可以制作这样的正则表达式:

re.compile(r"\{'ERROR_CODE': [45]\d{2}\}")

哪个匹配号码以4或5开头,后跟2个数字。

答案 1 :(得分:1)

这是你可以做到的一种方式:

import re
values = ["{'ERROR_CODE': 500}",
          "{'ERROR_CODE': 404}",
          "{'ERROR_CODE': 501}",
          "{'ERROR_CODE': 409}]"]

err_pattern = re.compile("\{\'ERROR_CODE\': [45]\d{2}\}")

for value in values:
    if err_pattern.match(value):
        output = "All are 4XX and 5XX"
    else:
        output = "Some values are not error codes"
        break

print output
# All are 4XX and 5XX