正则表达式:仅匹配嵌入了特定单词的组
Regex: Matching only groups that have a specific word embedded
我不知道如何只匹配包含特定单词的组('test',例如下面的示例)。这是一个大文本文件,组以行 'Group x' 开始,并包含与下一组的空行分隔的文本。我想我需要使用前瞻和后视,但不知道如何使用。我可以为此使用 vb.net,但试图在正则表达式测试器中测试不同的表达式,但无法获得任何结果。
Group 1
adfdf
dd test ddfdf
dfdfadf
Group 2
ddfadfa
Group 3
add test
adfdff
Group 4
adfdf
预计 2 场比赛:
Group 1
adfdf
dd test ddfdf
dfdfadf
Group 3
add test
adfdff
您的模式以 ^Group \d+$
开始,以 (?:^$|\Z)
结束。在中间匹配 test
但前面没有空行 $(?:.(?!^$)
(有关后者如何工作的详细信息,请参阅 Regular expression to match a line that doesn't contain a word?)。不要忘记 m
和 s
修饰符:
^Group \d+$(?:.(?!^$))*?test.*?(?:^$|\Z)
我不知道如何只匹配包含特定单词的组('test',例如下面的示例)。这是一个大文本文件,组以行 'Group x' 开始,并包含与下一组的空行分隔的文本。我想我需要使用前瞻和后视,但不知道如何使用。我可以为此使用 vb.net,但试图在正则表达式测试器中测试不同的表达式,但无法获得任何结果。
Group 1
adfdf
dd test ddfdf
dfdfadf
Group 2
ddfadfa
Group 3
add test
adfdff
Group 4
adfdf
预计 2 场比赛:
Group 1
adfdf
dd test ddfdf
dfdfadf
Group 3
add test
adfdff
您的模式以 ^Group \d+$
开始,以 (?:^$|\Z)
结束。在中间匹配 test
但前面没有空行 $(?:.(?!^$)
(有关后者如何工作的详细信息,请参阅 Regular expression to match a line that doesn't contain a word?)。不要忘记 m
和 s
修饰符:
^Group \d+$(?:.(?!^$))*?test.*?(?:^$|\Z)