<p>我不知道你到底想做什么,但你的正则表达式不是很具体,因为它的立场。下面是一个可以改进的建议解决方案。它看起来很复杂,但一旦坏了也不算太坏。你知道吗</p>
<p><code>^(\b(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b|\w+\.\w+\.(?:net|com|gov|edu))\s-\s-\s(\[[0-9]{2}\/\w{3}\/[0-9]{4}:[0-9]{2}:[0-9]{2}:[0-9]{2}\s-[0-9]{4}\])\s(\"[^\"]+\")\s(.*)$</code></p>
<p>查看<a href="https://regex101.com/r/ojIGIA/3" rel="nofollow noreferrer">https://regex101.com/r/ojIGIA/3</a>查看它的实际运行情况,并阅读右侧栏中的解释。你知道吗</p>
<p>编辑:我意识到我在regex的IP地址部分漏掉了一个<code>?</code>,我也忘了转义一个<code>"</code>,因为我没有考虑python的味道。修复并更新了正则表达式和链接。你知道吗</p>
<p>现在我有更多的时间来解释我所做的事情。上述正则表达式可以按如下方式拆分。<br/>
<code>^</code>行首</p>
<p><code>(</code>启动捕获组1</p>
<p><code>\b(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b</code>这是捕获IP地址。如果你不太担心的话,你可以做一些像<code>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}</code>这样的事情,这取决于你想要多精确。这将匹配所有有效的IP地址,但它也将匹配一些无效的。你知道吗</p>
<p><code>|</code>或运算符</p>
<p><code>\w+\.\w+\.(?:net|com|gov|edu)</code>这是一个非常基本的URL捕获示例。你知道吗</p>
<p><code>)</code>结束捕获组1</p>
<p><code>\s-\s-\s</code>与“--”完全匹配</p>
<P> ^ {CD12>},这是我在中间捕获日期和其他东西的建议。它将需要调整,完全取决于你想要什么。这也是捕获组2。你知道吗</p>
<p><code>\s</code>空格</p>
<p><code>(\"[^\"]+\")</code>在匹配的这一点上匹配倒逗号中的所有内容。捕获第3组。你知道吗</p>
<p><code>\s</code>空格</p>
<p><code>(.*)</code>匹配所有其他内容直到结束,并放入捕获组4。你知道吗</p>
<p><code>$</code>行尾</p>
<p>现在这些都只是建议,因为我不知道你到底想做什么,但希望这有帮助,给你一些想法。你知道吗</p>
<p>注意,我使用了\s而不是空格。使用空格没有错,我个人喜欢使用\s,因为它对我来说更容易阅读。你知道吗</p>