将多行与回车符匹配的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])