正则表达式使组只出现一次

我正在尝试在 Python 上运行正则表达式查询,但遇到以下问题:

在法语中,句子的主语可以出现在动词之前和之后。例如,句子“she say”可以翻译为“elle dit”和“dit-elle”,其中“elle”是“she”,“dit”是“says”。

是否可以仅捕获包含“elle”和“dit”的句子,无论主语“elle”在动词“dit”之前还是之后?我从以下几方面入手:

(elle).{0;10}(dit).{0;10}(elle)

但现在我想(elle)在找到另一个时将其中之一设为可选。和运算符在这种情况下没有帮助*+


陪伴而非守候
浏览 186回答 1
1回答

幕布斯6054654

您可以使用可以使用(或)安装的PyPiregex模块:pip install regexpip3 install regeximport regexp = 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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python