代码之家  ›  专栏  ›  技术社区  ›  Leyla Elkhamlichi

LinkedIn个人资料的正则表达式

  •  0
  • Leyla Elkhamlichi  · 技术社区  · 2 年前

    我想有一个函数来替换我在字符串中找到的LinkedIn个人资料。

    例子:

    使用该功能后,它应该是:

    • 你可以找到我的linkedin
    strA ='[Linkedin]'
    
    Def linkedin(sentence):
    urlReg = "^https?:\/\/?(w{3}.)? linkedin\.\/.$"
    res = re.search(urlReg, sentence)
    print(res)
    if res != None:
        ## replace urls
        sentence= re.sub(urlReg,strA, sentence)
    return (sentence)
    

    当我打印(res)时,它不接收字符串,我认为我的正则表达式不正确

    1 回复  |  直到 2 年前
        1
  •  1
  •   The fourth bird    2 年前

    关于您尝试的模式的一些注意事项:

    • 没有 // 在里面 https:www.linkedin.com/in/kim-zand-3126573/ (也许是打字错误?)
    • linkedin\.\/ 与linkedin.com不匹配 \/ 比赛 /
    • 示例字符串中没有空格,这在之前的正则表达式中是预期的 linkedin\.
    • 文本不在字符串的开头 ^ 只要有锚
    • 你必须避开圆点才能真正匹配它
    • 第二次正斜杠 // 不必是可选的,也不必避开正斜杠

    例如,您可以匹配:

    \bhttps?://www\.linkedin\.com/\S*
    

    或者,如果数据中真的没有双正斜杠:

    \bhttps?:www\.linkedin\.com/\S*
    

    然后替换为 [Linkedin]

    见a regex demo

    或者对给定示例进行更具体的匹配,匹配 -digits 最后一部分之前 /

    \bhttps?://www\.linkedin\.com\/[^\s/]+/[^/\s]+-\d+/(?!\S)
    

    看另一个 regex demo

    例子:

    import re
    
    strA = '[Linkedin]'
    urlReg = re.compile(r"\bhttps?://www\.linkedin\.com/\S*")
    
    def linkedin(sentence):
        return urlReg.sub(strA, sentence)
    
    result = linkedin(r"You can find my linkedin https://www.linkedin.com/in/kim-zand-3126573/")
    print(result)
    

    输出

    You can find my linkedin [Linkedin]