s_l = ["春天年初, ...","1999年", "很多年以前"]
for front_part in s_l:
idx_year = re.search(r'[\d]*[年]{1}[初末底前]{0,1}',front_part).end() \
if re.search(r'[\d]*[年]{1}[初末底前]{0,1}',front_part) else 0
print(idx_year)我想搜索具有年的子字符串的idx,同时,在年 或[初末底前](符号B)后面必须有数字(符号A),例如,在s_l中,它应该返回4,5,0。
一种划分正则表达式的方法,比如
re.search(r'[\d]+[年]{1}',front_part) or re.search(r'[年]{1}[初末底前]{0,1}',front_part)但是它太复杂了,另一个是使用(?=...),但我还没有这个想法,以及如何使用它,有什么建议吗?
发布于 2022-05-13 05:02:49
您可以使用查找后断言来匹配前面有一个数字的年事件。使用交替模式来匹配后面跟着[初末底前]的模式
pattern = re.compile(r'(?<=\d)年|年[初末底前]')
print([match.end() if match else 0 for match in map(pattern.search, s_l)])这一产出如下:
[4, 5, 0]https://stackoverflow.com/questions/72224387
复制相似问题