【问题标题】:regex carry look behind ip adress正则表达式携带后视IP地址
【发布时间】:2014-03-15 09:13:29
【问题描述】:

是否有一个正则表达式,它将读取并以正确格式返回此文本中的 IP 地址?请注意它是向后的,因此正则表达式必须向后单步执行代码,然后替换“|”用'。'

这让我发疯了......我很感激你的帮助;)

代码摘录:

4.3/d/c/ba",10:"0://8.7/1/1.f",z:"0://8.7/1/yx",w:"0://6.5 .4.3/i/v/ut",s:"r",q:p,o:n,9:\'0\',m:[{2:"l",k:"0://8.7 /1/1.f"},{2:"j",h:{e:\'0://6.5.4.3/d/c/ba\',\'9\':\'0\' }},{2:"g"}]});',36,40,'|type|187|20|207|31|com|hystorystingbulk|

期望回报:

31.207.20.187

谢谢!

编辑:我有一些零碎的东西,但我无法将它们放在一起以获得想要的结果

(?

\b\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}\b - 这将为您提供 ip 给定的文件/文本

\b\d{1,3}\|\d{1,3}\|\d{1,3}\|\d{1,3}\b -这将返回ip(但 向后。记得我想让它翻转)并用“|”分隔反而 的“。”

有人问....我正在使用 Python 并使用 http://www.regexplanet.com/advanced/python/index.html THX 进行测试

【问题讨论】:

  • 你能发布你已经尝试过的代码吗?这不是一个“我们将免费为您编写代码”的网站。
  • 另外,指定您使用的正则表达式引擎(或至少是哪种语言)可能是个好主意。例如,PCRE 和 POXIX 扩展正则表达式之间存在很多差异。
  • 正则表达式没有什么简单,这是肯定的:为什么不下载python并在本地使用呢?或者寻找在线成熟的口译员?为什么一定要特别使用这个网站?

标签: python regex lookbehind


【解决方案1】:

可能最好的方法是将每个数字单独存储到一个组中,然后格式化并将这些组连接在一起。

一些这样的:

/(\d+)\|(\d+)\|(\d+)|(\d+)/

这会创建 5 个不同的匹配组,一个用于每组父母 ( ),一个用于整个匹配。但这不是 Perl!现在,在 Python 中,它必须更像

match("(\\d+)\\|(\\d+)\\|(\\d+)|(\\d+)", ..)

然后,使用group 取出单个匹配项并按正确的顺序将它们放在一起:

group(...) "." group(...) "." group(...) "." group(...)

多田!

免责声明:这不是真正的 Python 语法,但应该给你一个想法。

【讨论】:

  • 谢谢,但这不是我的选择:(
  • 我不认为真的有其他选择。你在用什么? sed??
  • 这当然可能在 Python 中,带有匹配和组。
  • 我只需要拼凑这些(一起看我的编辑):(
  • 这是今天使用匹配组的答案,在 Python 中:stackoverflow.com/a/21805543/712526
【解决方案2】:
import re
expression = re.compile("(\d{1,3})\|(\d{1,3})\|(\d{1,3})\|(\d{1,3})")
text = """4.3/d/c/b.a",10:"0://8.7/1/1.f",z:"0://8.7/1/y.x",w:"0://6.5.4.3/i/v/u.t",s:"r",q:p,o:n,9:\'0\',m:[{2:"l",k:"0://8.7/1/1.f"},{2:"j",h:{e:\'0://6.5.4.3/d/c/b.a\',\'9\':\'0\'}},{2:"g"}]});',36,40,'|type|187|20|207|31|com|hystorystingbulk|"""

matches = expression.findall(text)

IPs = ['.'.join(reversed(match)) for match in matches]

>>> print(IPs)
['31.207.20.187']

【讨论】:

    猜你喜欢
    • 2011-06-20
    • 2017-03-15
    • 2015-11-22
    • 2013-02-21
    • 1970-01-01
    • 2021-10-26
    相关资源
    最近更新 更多