【问题标题】:Regex - match everything but this pattern (and first and last)正则表达式 - 匹配除此模式之外的所有内容(以及第一个和最后一个)
【发布时间】:2016-03-15 18:16:55
【问题描述】:

我正在尝试调整 DNS 数据的模式以匹配看起来像 DNS 地址的内容。在这种情况下,我有一个看起来像这样的字符串。

(19)espnfivethirtyeight(5)files(9)wordpress(3)com(0)

我想将其更改为实际的 DNS 名称,如下所示:

espnfivethirtyeight.files.wordpress.com

是否有一个正则表达式可以做到这一点?

【问题讨论】:

  • 您使用的是什么正则表达式风格,您尝试过什么?

标签: regex dns


【解决方案1】:

这可以分两步完成。

  1. 使用这个正则表达式并替换为空。

    ^\(\d+\)|\(\d+\)$ 这会将第一个和最后一个(number) 替换为空字符串。 Demo here

  2. 使用此正则表达式并替换为点。

    \(\d+\) 这将用点替换每次出现的(number)Demo here

【讨论】:

  • 这是用于 Splunk 安装和 DNS 中的字段提取/替换。我相信 Python 是他们利用的正则表达式。这个答案给了我很多继续。 Splunk Answers 上也有这个问题的答案。
  • @theGlitchKing:你也可以发布这个答案。
【解决方案2】:

由于没有指示正则表达式环境。我假设它是python。

import re

data = "(19)espnfivethirtyeight(5)files(9)wordpress(3)com(0)"
rx = re.compile(r"\(\d+\)")

print('.'.join([x for x in rx.split(data) if x!='']))

根据输入的字符串,会打印:

espnfivethirtyeight.files.wordpress.com

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 2022-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多