1 回答
TA贡献1876条经验 获得超7个赞
您可以使用可以使用(或)安装的PyPiregex模块:pip install regexpip3 install regex
import regex
p = r'(?<=\b(?P<subject>il|elle)\b.{0,10})?\b(?P<predicate>dit|mange)\b(?=.{0,10}\b(?P<subject>il|elle)\b)?'
print( [x.groupdict() for x in regex.finditer(p, 'elle dit et dit-elle et il mange ... dit-il', regex.S)])
查看在线 Python 演示
该模式可以从变量动态创建:
subjects = ['il', 'elle']
predicates = ['dit', 'mange']
p = fr'(?<=\b(?P<subject>{"|".join(subjects)})\b.{0,10})?\b(?P<predicate>{"|".join(predicates)})\b(?=.{0,10}\b(?P<subject>{"|".join(subjects)})\b)?'
细节
(?<=\b(?P<subject>il|elle)\b.{0,10})?- 可选回顾以抓取整个单词il或elle0 到 10 个字符内的单词\b(?P<predicate>dit|mange)\b- 整个单词dit或mange(?=.{0,10}\b(?P<subject>il|elle)\b)?- 可选的期待从谓词中获取整个单词il或0 到 10 个字符内的内容。elle
添加回答
举报
