Regex Python2.7中HTTP GET头的正则表达式匹配

Regex Python2.7中HTTP GET头的正则表达式匹配,regex,python-2.7,http,get,Regex,Python 2.7,Http,Get,我正在尝试形成一个正则表达式,它将匹配如下: 一个或多个字符,冒号或空格除外,其后以冒号结尾 后面跟着一个空格 后跟除冒号或空格以外的任何字符的一个或多个数字 紧接着是/r/n 如上所述,这是针对HTTP GET请求的,因此以下任何一项都可以工作: 主机:www.stackoverflow.com/r/n a-b-sads&^*@hgsdafAS&FTD:sjal;dfh9S^&D^F&(SDfsdgafs/r/n) 以下情况不会: 主持人:www.stackoverflow.com

我正在尝试形成一个正则表达式,它将匹配如下:

  • 一个或多个字符,冒号或空格除外,其后以冒号结尾
  • 后面跟着一个空格
  • 后跟除冒号或空格以外的任何字符的一个或多个数字
  • 紧接着是
    /r/n
如上所述,这是针对HTTP GET请求的,因此以下任何一项都可以工作:

  • 主机:www.stackoverflow.com/r/n
  • a-b-sads&^*@hgsdafAS&FTD:sjal;dfh9S^&D^F&(SDfsdgafs/r/n)
以下情况不会:

  • 主持人:www.stackoverflow.com
  • H:o:s:t:www.stackoverflow.com
  • 主持人:www.::stackoverflow.com
  • 主机:www.stackoverflow.com/n
我目前正在使用
re.compile(r“^.{1,}:.{1,}[/r/n]$”
,但不确定如何从字符串的某些子集排除冒号

EDIT:我想我首先要用
^
来表示字符串的开头。然后,我想要一个或多个除冒号以外的任何字符的数字,所以
{1,}
,但我不确定如何从该列表中排除冒号。然后我想要一个冒号和一个空格,所以只需
,然后是除冒号以外的任何字符
{1,}
,与前面排除冒号的问题相同。最后,我希望它以
[\r\n]结尾$
。即使我排除了无冒号字符的要求,这似乎仍然不起作用。因此类似于
^.{1,}:.{1,}\r\n$
,但我仍然需要找出如何排除冒号

  • {1,}只是+
  • 排除冒号由[^:]完成*
  • 如果要排除空格和冒号,请使用[^:]
  • 用$following捕捉字符串结尾\r\n对我来说似乎很奇怪,它意味着一个字符串以eoln结尾,后面什么都没有(我也希望您知道unix和windows在这方面的区别)
  • 另外:eoln是\r\n,将某些内容放在方括号中意味着包含的任何字符都将匹配,这不是您所需要的
  • 总之,以下几点应该是可行的

    ^([^::+):([^::+)$

    给组1中的主机和组2中的url


    测试它

    为什么第一个“主机:www.stackoverflow.com”不符合您的要求?@VeltzerDoron,因为它是主机空间:第一个空格不应该出现的空间。因此,您想从第一个字符串中排除空格,或者在冒号之前?@Veltzer Doron啊,是的,冒号之前的第一个字符串应该排除空格和冒号。然后是冒号,后面是单个空格,然后是第二个字符串不包括以/r/n结尾的空格和冒号。好了,我现在明白我到底做错了什么。谢谢你的帮助。