1 回答
![?](http://img1.sycdn.imooc.com/5333a1bc00014e8302000200-100-100.jpg)
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
或elle
0 到 10 个字符内的单词\b(?P<predicate>dit|mange)\b
- 整个单词dit
或mange
(?=.{0,10}\b(?P<subject>il|elle)\b)?
- 可选的期待从谓词中获取整个单词il
或0 到 10 个字符内的内容。elle
添加回答
举报