Regex 超过最大行数的正则表达式

Regex 超过最大行数的正则表达式,regex,pcre,Regex,Pcre,我有一些正则表达式是匹配行,我不想包括在内。我试着使用积极和消极的前瞻,但我不能完全理解它。相反,我想知道是否有一个选项只匹配最多行数,例如4行 我的部分工作正则表达式是: TLS 1.1 Cipher suites(?s).*?The server accepted 问题是它包括了前7行,我不想包括在内。我只想在下面的文本中包括第11-14行: * TLS 1.1 Cipher suites: Attempted to connect using 80 cipher suites

我有一些正则表达式是匹配行,我不想包括在内。我试着使用积极和消极的前瞻,但我不能完全理解它。相反,我想知道是否有一个选项只匹配最多行数,例如4行

我的部分工作正则表达式是:

TLS 1.1 Cipher suites(?s).*?The server accepted
问题是它包括了前7行,我不想包括在内。我只想在下面的文本中包括第11-14行:

 * TLS 1.1 Cipher suites:
     Attempted to connect using 80 cipher suites; the server rejected all cipher suites.

 * TLS 1.2 Cipher suites:
     Attempted to connect using 158 cipher suites.

     The server accepted the following 4 cipher suites:
        TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384             256       ECDH: prime256v1 (256 bits)

 * TLS 1.1 Cipher suites:
     Attempted to connect using 15 cipher suites.

     The server accepted the following 2 cipher suites:
        TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA                256       ECDH: prime256v1 (256 bits)

我希望这是有意义的。

根据我的评论,您似乎希望在单个“块”中同时匹配“TLS 1.1密码套件”和“服务器已接受”。因此,我想否定一个字面上的星号:

TLS 1\.1 Cipher suites[^*]*The server accepted
在线查看


不确定您的意图是什么,请使用匹配的子字符串。请注意,如果要匹配文字点,则需要用反斜杠将其转义。

根据我的评论,似乎要在单个“块”中同时匹配“TLS 1.1密码套件”和“服务器已接受”。因此,我想否定一个字面上的星号:

TLS 1\.1 Cipher suites[^*]*The server accepted
在线查看


不确定您的意图是什么,请使用匹配的子字符串。一个小提示,如果要匹配文字点,需要用反斜杠将其转义。

那么您要获得文件的最后一个匹配项,对吗?不完全正确,我只想匹配长度超过4行的字符串。在本例中,它与前7行相匹配(我不想要),我认为您应该能够使用与4行相匹配的正向前瞻
(?=(?:.*\n){4}
您还需要一个反向前瞻,以防止它包含多个块。magic!这在JvdV是有效的。非常感谢!!谢谢大家的帮助)那么你想得到文件的最后一个匹配,对吗?不完全是,我只想匹配长度超过4行的字符串。在本例中,它与前7行相匹配(我不想要),我认为您应该能够使用与4行相匹配的正向前瞻
(?=(?:.*\n){4}
您还需要一个反向前瞻,以防止它包含多个块。magic!这在JvdV是有效的。非常感谢!!谢谢大家的帮助再次非常感谢!!我没有足够的分数投票给你,否则我会的!再次非常感谢!!我没有足够的分数投票给你,否则我会的!