【问题标题】:Regex: Matching a block with a pattern A until it hits another pattern B while capturing everything including the repeats of the pattern A?正则表达式:将一个块与模式 A 匹配,直到它遇到另一个模式 B,同时捕获包括模式 A 的重复在内的所有内容?
【发布时间】:2021-06-04 15:38:45
【问题描述】:

标题可能无法正确描述我心中的问题,以下是详细说明:

我有一个包含大量问题和答案的测试库。问题以数字\d+ 开头,然后是点.,然后是问题正文.*。完整的问题模式是\d+\.\s+(.*)。我只需要问题正文。

问题后面是一个答案列表,每个答案都以一个字母和一个右括号(例如=> A))开头,然后是答案正文。这是问题的模式:\w\)\s+?(.*)

这里是示例文本:

39. Lorem ipsum dolor sit amet consectetur adipisicing elit?
A) Officia quaerat
B) dignissimos mollitia 
C) ratione dolore dolores quam 
D) voluptatibus voluptate 
40. Lorem ipsum dolor sit amet consectetur adipisicing elit. Officia quaerat dignissimos mollitia ratione?
Officia quaerat dignissimos mollitia ratione?
1. question body text    2. question body text    3. question body text    4. question body text    5. question body text   6. question body text
A) Eaque, natus accusantium
B) Odio eum maxime voluptatibus
C) Est quos iure mollitia quas omnis
D) Expedita, eum cupiditate
41. Lorem, ipsum dolor sit amet consectetur adipisicing elit. Quas, laboriosam 
A) consectetur molestias tenetur
B) debitis ex eos dolor tenetur
C) Sunt maiores voluptatibus
D) consectetur adipisicing elit

问题是我的问题模式不适用于问题 40,它有一个多行文本块作为一个问题。如何正确断言我的正则表达式捕获了从数字 40 40. 到到达 A) 的所有内容?

这里是警告:问题正文中还有另一个匹配模式: 1. question body text 2. question body text 3. question body text 4. question body text 5. question body text 6. question body text。目前,此部分被捕获为一个单独的问题。

这里是the link 到 regex101 的相同测试字符串。

你会怎么做呢?任何帮助表示赞赏。

【问题讨论】:

  • 在 Python 中,像 re.match() 和 re.findall() 这样的函数接受 flags 关键字参数。在 re 中定义了几个常量来改变这些函数的行为。您想要的标志值是 re.MULTILINE。这些常量旨在用作位掩码,因此将它们用于多个标志:re.match(pattern, string, flags=re.MULTILINE | re.IGNORECASE)。 docs.python.org/3/library/re.html

标签: javascript python regex


【解决方案1】:

此解决方案应该适合您。它使用正向前瞻表达式来延迟匹配直到但不包括A) 的任何内容。重要的是,您需要打开the option,其中.* 将匹配新行。

\d+\..+?(?=A\))

这里是link

【讨论】:

猜你喜欢
  • 2022-09-24
  • 2018-10-17
  • 1970-01-01
  • 1970-01-01
  • 2017-04-29
  • 1970-01-01
  • 2021-05-10
  • 2011-03-05
  • 1970-01-01
相关资源
最近更新 更多