【问题标题】:How to Extract IP address using regex using spacy Phrase matcher如何使用 spacy 短语匹配器使用正则表达式提取 IP 地址
【发布时间】:2020-05-25 17:17:34
【问题描述】:
text="Link down , Bypass (92.33.2222.88)  is not pinging"

doc=nlp(text)


pattern= [ {"TEXT": {"REGEX": "[\(][0-9]+[\.][0-9]+[\.][0-9]*[\.][0-9]*[\)]"}}]
matcher=Matcher(nlp.vocab)
matcher.add("ip",None, pattern)
matches=matcher(doc)
matches
[]    
# no match found!!

否则,正则表达式工作正常:

re.findall("[\(][0-9]+[\.][0-9]+[\.][0-9]*[\.][0-9]*[\)]" ,text)

输出:['(92.33.2222.88)']

【问题讨论】:

    标签: regex spacy matcher phrase


    【解决方案1】:

    首先,(92.33.2222.88) 不是有效 IP。

    如果你不关心 IP 有效性,下一个问题是 () 不是 IP 令牌的一部分,print([(t.text, t.pos_) for t in doc]) 命令显示 ('92.33.222.88', 'NUM'),所以你的模式在这里无效,因为你将() 包含在模式中。

    如果您打算匹配digit.digits.digits.digits 的任何块,您可以使用

    pattern= [ {"TEXT": {"REGEX": r"^\d+(?:\.\d+){3}$"}}]
    matcher.add("ip", None, pattern)
    

    如果您只想匹配有效的 IPv4 字符串,请使用

    octet_rx = r'(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'
    pattern= [ {"TEXT": {"REGEX": r"^{0}(?:\.{0}){{3}}$".format(octet_rx)}}]
    matcher.add("ip", None, pattern)
    

    完成测试sn-p:

    import spacy
    from spacy.matcher import Matcher
    
    nlp = spacy.load("en_core_web_sm")
    
    matcher = Matcher(nlp.vocab)
    octet_rx = r'(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'
    pattern= [ {"TEXT": {"REGEX": r"^{0}(?:\.{0}){{3}}$".format(octet_rx)}}]
    matcher.add("ip", None, pattern)
    
    doc = nlp("Link down , Bypass (92.33.222.88)  is not pinging")
    matches = matcher(doc)
    for match_id, start, end in matches:
        string_id = nlp.vocab.strings[match_id]
        span = doc[start:end]
        print(match_id, string_id, start, end, span.text)
    # => 1699727618213446713 ip 5 6 92.33.222.88
    

    【讨论】:

    • 谢谢..我想匹配 (digit.digit.digit.digit) 和 pattern= [ {"TEXT": {"REGEX": r"^\d+(?:\.\ d+){3}$"}}] 完美运行.. 是的,(92.33.2222.88) 不是有效 IP,我随机输入了一个示例..
    猜你喜欢
    • 2011-08-27
    • 2021-08-17
    • 2020-12-01
    • 2013-02-08
    • 2012-04-27
    • 1970-01-01
    • 2012-10-27
    • 2011-08-17
    • 2012-05-17
    相关资源
    最近更新 更多