如何获取组中的尾随值

时间:2014-04-22 15:30:17

标签: regex

我有一个文本,我想使用正则表达式模式将文本分组。

以下是我可以提供的文字示例:

Some text...

<style id=1>Header</style>

Some other text...

<style id=2>
- Bullet 1
- Bullet 2
</style>

Trailing text...

要求:

  1. 我可能在标签之前或之后有文字
  2. 我想要一个返回多个匹配的模式。例如:在这种情况下,我可以有2或3个匹配,具体取决于正则表达式模式组。
  3. 我可能有换行符
  4. 我目前正在使用这种模式:

    (?<prefix>[\s\S]*?)<style id=(?<id>[0-9]+)>(?<content>[\s\S]*?)</style>
    

    目前,我使用此模式进行了两场比赛,其中包括:

    [prefix]: Some text...
    [id]: 1
    [content]: Header
    
    [prefix]: Some other text...
    [id]: 2
    [content]:
    - Bullet 1
    - Bullet 2
    

    我无法创建一个能够捕获“尾随文本...”的组。我试过但是当我在模式的末尾添加一个组时,它只返回一个匹配,并且它的前缀包含第一个标记。

    任何想法??

    由于

1 个答案:

答案 0 :(得分:0)

您可以使用*重复整个模式,然后添加与所有内容匹配的内容。

((?<prefix>[\s\S]*?)<style id=(?<id>[0-9]+)>(?<content>[\s\S]*?)</style>)*(?<suffix>[\s\S]*)