正则表达式在标签内找到多个字符串实例

时间:2015-03-05 14:33:57

标签: regex regular-language

我有这个文件:

BT
abc
def
(xxxx)Tj
ghi
lmn
(yyyy)Tj
ET
AK
abc
def
(wwww)Tj
ghi
lmn
(zzzz)Tj
EK
.....

(这是PDF结构的一个例子)。

我想提取 BT-> ET 标记内的每个(文本)Tj 。 此示例的输出必须是:

  • XXXX

  • YYYY

(而不是'wwww'和'zzzz'因为在AK-> EK标签内......)

我写了我的第一个正则表达式:

(?:^BT$)(:?[\s\S]*?)(^\(.*\)Tj$)(?:[\s\S]*?)(:?^ET$)

但这只是第一个'xxxx'。 我该怎么办?

1 个答案:

答案 0 :(得分:2)

幸福新闻是C#支持\G anchor。 anchor \ G匹配上一场比赛结束的位置。

(?:(?:^|\n)\bBT\b|(?<!^)\G)(?:(?!\bET\b).)*?\(([^)]+)\)Tj(?=\n(?:(?!\bET\b).)*?ET)

只需从组索引1中获取所需的字符串。

DEMO