Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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
Regex Python正则表达式在匹配后匹配n行_Regex_Python 3.x_Regex Lookarounds - Fatal编程技术网

Regex Python正则表达式在匹配后匹配n行

Regex Python正则表达式在匹配后匹配n行,regex,python-3.x,regex-lookarounds,Regex,Python 3.x,Regex Lookarounds,我有一个模式可以在带有pcre的regexr.com上正常工作,但是当我将它与python一起使用时,它与任何东西都不匹配。 模式是: .*(?<=RSA SHA256:).*(?:.*\n){3}.* 您不必使用lookback,您可以匹配该值 要匹配以下三行,您可以切换换行符和*以省略最后一行* ^.*\bRSA SHA256:.*(?:\n.*){3} ^字符串的开头 *\bRSA SHA256:.*匹配RSA SHA256:,在前面有单词边界的字符串中 (?:\n.*){3}

我有一个模式可以在带有pcre的regexr.com上正常工作,但是当我将它与python一起使用时,它与任何东西都不匹配。 模式是:

.*(?<=RSA SHA256:).*(?:.*\n){3}.*

您不必使用lookback,您可以匹配该值

要匹配以下三行,您可以切换换行符和
*
以省略最后一行
*

^.*\bRSA SHA256:.*(?:\n.*){3}
  • ^
    字符串的开头
  • *\bRSA SHA256:.*
    匹配
    RSA SHA256:
    ,在前面有单词边界的字符串中
  • (?:\n.*){3}
    将换行符重复3次,然后匹配除换行符之外的任何字符3次

在代码中,您可以使用:


你的实际行为是什么?谢谢你,这很有帮助,但我不知道为什么我运行它时它不会打印任何内容。这个模式在正则表达式演示中确实有效。我已经用
re.M
更新了答案。你能检查一下它是否有效吗?我在本地环境中运行了一个名为
secure
的文件和您的示例数据,得到了4行@J0876car,它启用了多行。您可以使用
re.M
re.MULTILINE
。如果re2:print('\n'','\n'.join(re2))和我得到我想要的,则会影响锚的含义。re2=re.findall(Accepted_publickey.strip(),items,re.M)。再次感谢你@J0876car确实,如果您使用re.findall,您将获得所有匹配项。regex101上还有一个代码生成器。这将使用re.finditer生成示例代码
Oct 21 17:27:21 localhost sshd[19772]: Accepted publickey for vagrant from 192.168.2.140 port 54614 ssh2: RSA SHA256:uDsE4ecSD9ElWQ5Q0fdMsbqEzOe0Hszilv8xhU6dT6M
Oct 21 17:27:22 localhost sshd[19772]: pam_unix(sshd:session): session opened for user vagrant by (uid=0)
Oct 21 17:27:22 localhost sshd[19772]: User child is on pid 19774
Oct 21 17:27:22 localhost sshd[19774]: Starting session: shell on pts/2 for vagrant from 192.168.2.140 port 54614 id 0
^.*\bRSA SHA256:.*(?:\n.*){3}
import re

Accepted_publickey = r'^.*RSA SHA256:.*(?:.*\n){3}.*'
f = open('secure')
items = f.read()
re1 = re.search(Accepted_publickey, items, re.M)
if re1:
    print(re1.group())