擅长:python、mysql、java
<pre><code>import re
secv = "90.123.1.100 akmfiawnmgisa gisamgisamgsagr[sao l321r1m r2p4 2342po4k2m4 22.33.4.aer 1.2.3.5344 99.99.99.100 asoifinagf sadgsangidsng sg 13.18.19.100 1.2.3.4"
b = re.findall(r"(?:\s|\A)(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(?=\s|\Z)",secv)
b = list(filter(lambda x: all([int(y) <= 255 for y in x.split('.')]), b))
print(b)
</code></pre>
<p>为了更有趣,我在字符串的开头和结尾添加了IP地址。我假设如果不是在字符串的开头或结尾,ip地址需要在两边用空格隔开。因此,我在REGEX的开头添加了一个非捕获组<strong>(?:\s |\A)</strong>将匹配字符串开头的空格字符<em>或</em>。我还在REGEX的末尾添加了一个lookahead断言(?=\s |\Z)将匹配单个空格字符或行尾<em>,而不消耗任何字符</em>。上面打印出来:</p>
<pre><code>['90.123.1.100', '99.99.99.100', '13.18.19.100', '1.2.3.4']
</code></pre>