【发布时间】:2020-04-05 09:36:54
【问题描述】:
我一直在尝试从 xml 字符串中匹配单个 IPv4 地址并将其绑定到变量以供以后使用。我已经在一些在线测试器中测试了正则表达式本身,它似乎可以与一些示例输出一起使用。我还使用更简单的正则表达式和模式测试了类似于下面的 BASH_REMATCH 并且它可以工作。那么我的正则表达式本身与 bash 不兼容是否存在问题?
示例脚本...
#!/bin/bash
rawxml="<ip-netmask>1.2.3.4/32</ip-netmask>"
ipv4regex="(((?:|\.)(2(?:5[0-5]|[0-4]\d)|1?\d?\d)){4})"
# Finding IP from $rawxml and binding it to its own variable
if [[ $rawxml =~ $ipv4regex ]]; then
ipfound=${BASH_REMATCH[1]}
fi
echo "IP found is "$ipfound""
这里的预期输出是....
“找到的 IP 是 1.2.3.4”
【问题讨论】: