繁体   English   中英

正则表达式在 Google 表格中提取 IP 地址(第 3 和第 4 八位字节)的最后两个八位字节

[英]Regex to extract last two octets of IP address (3rd and 4th Octet) in Google Sheets

我需要帮助以使用正则表达式提取IP 地址(第 3 和第 4 个八位字节)的最后两个八位字节

此正则表达式用于提取前两个八位字节(第一个和第二个八位字节)

(1?\d\d?|2[0-4]\d|25[0-5])

你可以在这里试试 https://rubular.com/r/ynDa71Zd1M2f24

但我不知道如何提取第 3 和第 4 个八位字节。 任何人都可以帮助我吗?

  • 输入:192.168.1.1 Output:192.168.0.0/16
  • 输入:192.168.2.1 Output:192.168.0.0/16
  • 输入:10.10.1.1 Output:10.10.0.0/16

谢谢,

解决方案

你可以使用这样的东西:

(?P<first>\d{2,3})\.(?P<second>\d{1,3})\.(?P<third>\d{1,3})\.(?P<fourth>\d{1,3})

或者,如果您没有命名捕获组支持,请使用:

(\d{2,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})

这会将您的字符串分成四个不同的组,每个组包含 ip 的一个八位字节。

例子

import re

pattern = r"(?P<first>\d{2,3})\.(?P<second>\d{1,3})\.(?P<third>\d{1,3})\.(?P<fourth>\d{1,3})\n?"
matcher = re.compile(pattern)

ips = """
192.168.1.1
192.168.1.2
"""

result = matcher.findall(ips) # [('192', '168', '1', '1'), ('192', '168', '1', '2')]

例如,您可以使用一个模式来匹配 ip 之类的格式,并对包括点在内的前 2 个部分使用捕获组。

在替换中使用捕获组值$1后跟0.0/16

=REGEXREPLACE(A2,"^(\d{1,3}\.\d{1,3}\.)\d{1,3}\.\d{1,3}$","$10.0/16")

查看正则表达式演示

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM