Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.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,我有以下数据: POST / HTTP/1.1 User-Agent: curl/7.27.0 Host: 127.0.0.1 Accept: */* Content-Length: 55 Content-Type: application/x-www-form-urlencoded id=1234&var=test&nextvar=hh%20hg&anothervar=BB55SSKKKkk 或 或 如何仅匹配id=1234&var=test&nextvar=hh%

我有以下数据:

POST / HTTP/1.1
User-Agent: curl/7.27.0
Host: 127.0.0.1
Accept: */*
Content-Length: 55
Content-Type: application/x-www-form-urlencoded

id=1234&var=test&nextvar=hh%20hg&anothervar=BB55SSKKKkk

如何仅匹配
id=1234&var=test&nextvar=hh%20hg&anothervar=bb55sskkkk
字符串?我指的是在
两个行尾(
\r\n或^M
)和下一个
行尾(
\r\n或^M
)之间可打印的任何内容 我试过这样的方法:

re.findall(r'^>([^\r\n]+)[\r\n]([a-zA-Z0-9=%&\r\n]+)', buf, re.MULTILINE|re.DOTALL)

但没有对手。我做错了什么?

我不知道为什么在正则表达式的开头有
。这就是阻止你获得任何匹配的原因。如果您现在删除它,则有许多您似乎不需要的匹配项

我建议:

(?<![\r\n])(?:\r\n|\r|\n){2}[^\r\n]+
试试这个:

(?:(?:\^M)|[\n\r])+(id=.*)(?=(?:\^M)|[\n\r])

解释


嗯,这给了我一些类似于
\r\n\r\n\r\n\r\n\n\n\r\n\n\n\n\r\n\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\n\n\n\n尼d=1234=4=4.4\0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\\\\\n\n\n\r\r\r\n\n\n\n\n\n=4=4=4=4=4=4=4=4=4=4=4=4=1234=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00……’]
(snip)知道为什么吗?@xtmtrx-huh,你的文件中有空字符。
\x00
是空字符。我不太熟悉在正则表达式中使用unicode字符,但是你能试试:
(?相反(我在末尾添加了
\x00
找到了\u rx+=re.findall(r'(?@xtmtrx哦,那些是文字字符?我以为它们是元字符。我会更新我的答案。谢谢!我会把它作为答案!这根本不匹配。
id=
就是一个例子,可以是任何东西。
(?<![\r\n])(?:\r\n|\r|\n){2}[^\r\n]+
(?<![\r\n])(?:(?:\\r\\n|\^M)?(?:\r\n|\r|\n)){2}((?:(?!\\r\\?n?|\\n|\^M)[^\r\n\x00])+)(?:\\r\\n|\^M)?
(?:(?:\^M)|[\n\r])+(id=.*)(?=(?:\^M)|[\n\r])