从文本中提取 linkedin 用户名的模式

pattern to extract linkedin username from text

我正在尝试提取以这种格式编写的 linkedin url,

text = "patra 12 EXPERIENCE in / in/sambhu-patra-49b4759/ 2020 - Now O Skin Curate Research Pvt Ltd Embedded System Developer, WB 0 /bindasssambhul O SKILLS LANGUAGES Arduino English Raspberry Pi Movidius Hindi Bengali ICS Intel Compute Stick PCB Design Python UI Design using Tkinter HOBBIES HTML iti CSS G JavaScript JQuery IOT\n"


pattern = \/?in\/.+\/?\s+

我需要从任何像上面这样的嘈杂文本中提取这个in/sambhu-patra-49b255129/

这是一个 linkedin url 写的简短形式。

我的模式不工作

您可以使用

m = re.search(r'\bin\s*/\s*(\S+)', text)
if m:
  print(m.group(1))

参见regex demo

详情:

  • \b - 单词边界
  • in - 介词 in
  • \s* - 零个或多个空格
  • / - 一个 / 字符
  • \s* - 零个或多个空格
  • (\S+) - 捕获第 1 组:任何一个或多个空格。

怎么样:

text.split(" ")[5]

另一个匹配单词字符的选项,可选地由 - 重复,单词字符末尾可选 /

(?<!\S)in/\w+(?:-\w+)*/?

模式匹配:

  • (?<!\S) 断言左侧空白边界
  • in/字面匹配
  • \w+(?:-\w+)* 匹配 1+ 个单词字符,可选择重复 - 和 1+ 个单词字符
  • /? 匹配可选 /

Regex demo

import re
s = ("patra 12 EXPERIENCE in / in/sambhu-patra-49b4759/ 2020 - Now O Skin Curate Research Pvt Ltd Embedded System Developer, WB 0 /bindasssambhul O SKILLS LANGUAGES Arduino English Raspberry Pi Movidius Hindi Bengali ICS Intel Compute Stick PCB Design Python UI Design using Tkinter HOBBIES HTML iti CSS G JavaScript JQuery IOT")
m = re.search(r"(?<!\S)in/\w+(?:-\w+)*/?", s)
if m:
    print(m.group())

输出

in/sambhu-patra-49b4759/

这可以在不使用任何正则表达式的情况下完成:

>>> text = "patra 12 EXPERIENCE in / in/sambhu-patra-49b4759/ 2020 - Now O Skin Curate Research Pvt Ltd Embedded System Developer, WB 0 /bindasssambhul O SKILLS LANGUAGES Arduino English Raspberry Pi Movidius Hindi Bengali ICS Intel Compute Stick PCB Design Python UI Design using Tkinter HOBBIES HTML iti CSS G JavaScript JQuery IOT\n"
>>> s = text[text.find(' in/')+1:]
>>> print (s[0:s.find(' ')])
in/sambhu-patra-49b4759/

这是其中一种方法。

regex = re.compile("\/\s?in\/(.*?)\/")
def check(str):
    search = re.search(regex, str)
    if search is not None:
        print(search.group(1))

输出

sambhu-patra-49b4759