从文本中提取 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+ 个单词字符
/?
匹配可选 /
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
我正在尝试提取以这种格式编写的 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+ 个单词字符/?
匹配可选/
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