示例代码
import re
line = "should we use regex more often, University of Pennsylvania. let me know at 321dsasdsa@dasdsa.com.lol"
match = re.search(r'/([A-Z][^\s,.]+[.]?\s[(]?)*(Hospital|University|Institute|Law School|School of|Academy)[^,\d]*(?=,|\d)/', line)
print(match.group(0))
我正在尝试使用python中的正则表达式从给定的字符串中提取大学/学校/组织名称,但这会给出错误消息。
错误消息
回溯(最近通话最近):文件 “ C:/Python/addOrganization.py”,第4行,在 print(match.group(0))AttributeError:'NoneType'对象没有属性'group'
答案 0 :(得分:0)
代替搜索,请尝试re.sub打印您的预期输出
import re
i = "should we use regex more often, University of Pennsylvania. let me know at 321dsasdsa@dasdsa.com.lol"
line = re.sub(r"[\w\W]* ((Hospital|University|Centre|Law School|School|Academy|Department)[\w -]*)[\w\W]*$", r"\1", i)
print line
答案 1 :(得分:0)
您给出的测试字符串是一个组成的字符串,因为大学名称后紧跟一个行终止符“。”。而您的pastebin sample中的其他示例则没有(它们后面带有逗号)。
line = should we use regex more often, University of Pennsylvania. let me know at 321dsasdsa@dasdsa.com.lol
在您的pastebin
中,我已经使用一个简单的正则表达式提取了示例名称,您可以在此处查看详细信息:regex101.com
由于学院名称用逗号分隔(第一种情况是以大学名称开头),因此您可以看到匹配字符串位于group1
或{{1}中}。
然后,您可以遍历group2
和group1
以查看其是否与预定义的匹配列表中的任何内容匹配并返回值。
我已经用两个例子证明了它的作用。
group2