这是我想要实现的目标。给定一组数据,我试图获得包含我所拥有的匹配正则表达式的整行。
基本上,给定一个这样的数据集
AFAM 002A AFAM & DEV AM HIS/GV 03 46493 3 LEC D2 70 P 20/15 W 1800-2045 08/24/16-12/12/16 WSQ 207 K WHITE
AFAM 102 AFRO-AMER MUSIC 01 47200 3 LEC P 5/30 W 1800-2045 08/24/16-12/12/16 MUS 250 V GROCE-ROBERTS
AFAM 125 THE BLACK FAMILY 01 47198 3 LEC P 16/40 M 1800-2045 08/24/16-12/12/16 CCB 101 S MILLNER
AFAM 152 THE BLACK WOMAN 01 47199 3 LEC P 8/40 T 1800-2045 08/24/16-12/12/16 CL 111 R WILSON
AFAM 159 ECON ISSUES BLKCM 01 47197 3 LEC P 11/40 MW 1330-1445 08/24/16-12/12/16 CL 234 R WILSON
AFAM 180 INDIVIDUAL STUDIES 01 46982 3 SUP P 0/10 TBA TBA 08/24/16-12/12/16
我创建的正则表达式基本上将以下内容分组为..
我现在遇到的问题是,对于可选值,而不是检查它是否存在,如果不存在,则留空。如果有人能告诉我正确的方法,我会非常感激。
基本上这部分正则表达式([A-Z][\s][A-Z]+[-]*[A-Z]+)?
如果存在则需要包括在内,我理解?
运算符应该如何工作,但我似乎无法找到这个问题的正确关键字所以我在这里
([A-Z]+[\s][0-9]+[A-Z]*)(.+)[\s][0-9]+[\s][0-9]+.+(\d\d\/\d\d\/\d\d)-(\d\d\/\d\d\/\d\d)[\s]([A-Z][\s][A-Z]+[-]*[A-Z]+)?
此数据集的最后两行的预期结果应为
{ [ (AFAM 159), (ECON ISSUES BLKCM), (08/24/16), (12/12/16), (R WILSON)],
[(AFAM 180), (INDIVIDUAL STUDIES), (08/24/16), (12/12/16), ()]
}
答案 0 :(得分:1)
您的正则表达式与最后一行中的from bs4 import BeautifulSoup
import requests
# Assuming this is the url where the file is
html = requests.get('http://www.lancaster.ac.uk/fass/projects/corpus/emille/MANUAL.htm').content
bsObj = BeautifulSoup(html)
textData = bsObj.findAll('p')
for item in textData:
print item.get_text()
不匹配。你需要消耗它。但是,仅添加CL 234
将不起作用,您需要使您的可选模式必须(删除.*?
)并使用可选的非捕获组?
包装.*?([A-Z]\s[A-Z]+-*[A-Z]+)
。
(?:....)
请参阅regex demo。