如何用Perl风格正则从FQDN提取域名(适配Terraform regex函数)
解决方案
正则表达式(无捕获组,直接返回目标字符串)
使用正向预查匹配第一个子域名之后的所有内容,正则如下:
(?<=^[^.]+\.).+$
正则解释
(?<=^[^.]+\.):正向断言,确保匹配内容的左侧是从字符串开头到第一个点的完整子域名(^[^.]+匹配第一个点前的所有非点字符,\.匹配第一个点).+$:匹配第一个点之后的所有字符直到字符串结尾,这就是需要保留的域名部分
Terraform 使用示例
# 第一个示例 output "domain1" { value = regex("(?<=^[^.]+\.).+$", "api.mydiomain.org.local") } # 输出: mydiomain.org.local # 第二个示例 output "domain2" { value = regex("(?<=^[^.]+\.).+$", "app.stg.mydiomain.org.local") } # 输出: stg.mydiomain.org.local # 第三个示例 output "domain3" { value = regex("(?<=^[^.]+\.).+$", "uses.anotherdomain.uk") } # 输出: anotherdomain.uk
备选方案(使用捕获组)
如果偏好捕获组的方式,也可以用下面的正则,此时Terraform会返回一个列表,取第一个元素即可:
^[^.]+\.(.*)$
使用示例:
output "domain" { value = regex("^[^.]+\.(.*)$", "api.mydiomain.org.local")[0] }
内容的提问来源于stack exchange,提问作者MacUsers
相关产品推荐
相关产品推荐

