【发布时间】:2022-11-23 12:08:53
【问题描述】:
我有一些模式可以检测问题并在此基础上进行拆分。我正在使用一些假设,例如:
- 每个模式都以
\n开头 - 每个模式都以
\s+结尾我如何定义模式是这样的:
<NUM>. Q <NUM>. Q <NUM> <Q.NUM.> <NUM> Question <NUM> <Example> Problem <NUM> Problem: <Alphabet><Number>. <EXAMPLE> Example <NUM>Someone suggested the below regex: try the demo
((Q|Question|Problem:?|Example|EXAMPLE)\.? ?\d+\.? ?|(Question|Problem:?|Example|EXAMPLE) ?)但它捕获了中间的模式,这对我来说是有问题的,因为我也可以在字符串中间有
Q.、Example. 2而不是捕获<NUM>.这个列表是基于优先级的,所以我能想到的是构建这么多表达式并基于优先级运行一个循环,例如:
QUESTIONS = [ re.compile("\n\d+\."), re.compile("\nQ.\s*\d+\."), re.compile("\nExample.\s*\d+\.") ]但效率很低。我怎样才能将这些组合在一个表达式中?
【问题讨论】:
标签: python regex regex-group python-re