我想知道是否有办法解决这个问题。我有这种字符串,只想提取出大学的名字。
我的理想模式如下,但我知道后视镜是零宽度。
idealpattern = (?<=\d+)\s+[A-Za-z ]{5,20}?(?=[A-Z][A-Z])
我也可以从后视镜中取出\ d,然后移除数字,但我想知道是否有办法用后视来消除这一步。
altpattern = \d+\s+[A-Za-z ]{5,20}?(?=[A-Z][A-Z])
解决此问题的常用方法有哪些?
商务人员和Commonfund Institute。美国和加拿大 2013财年上市机构市值和市场价值 从2012财年到2013财年,捐赠市场价值的变化* *注意: 市场价值的变化并不代表市场的回报率 机构投资。相反,市场价值的变化 2012财年至2013财年的捐赠额反映了以下方面的净影响: 1)提取资金用于机构运营和资本支出; 2)支付养老金管理和投资费用; 3) 捐赠者捐赠和其他捐助的补充;和4) 投资收益或损失。排名机构州/省2013 捐赠基金($ 000s)2012年捐赠基金($ 000)*市场变化 价值(%)1哈佛大学硕士学位32,334,293 30,435,375 6.2 2耶鲁大学 University CT 20,780,000 19,345,000 7.4 3德克萨斯大学系统 TX 20,448,313 18,263,850 12.0 4斯坦福大学CA 18,688,868 17,035,804 9.7 5普林斯顿大学新泽西州18,200,433 16,954,128 7.4 6
答案 0 :(得分:0)
你真的需要使用外观吗?这对我有用:
re.findall(r"\d+\s+([A-Za-z ]{5,}?) [A-Z][A-Z]", subject)
输出:
Harvard University
Yale University
University of Texas System
Stanford University
Princeton University
换句话说,使用一组来捕捉您真正感兴趣的部分。 Lookbehinds是正则表达式功能列表的一个非常晚的补充,这不是它们要解决的问题。
(请注意,我也利用了Python的findall()
方法仅返回捕获组的内容这一事实。当你期待它时它是一个很好的功能,但是它往往会让人感到意外。)