Python正则表达式匹配多行文本块
我编写了一个正则表达式来选择第一个块,但它不起作用。 它只选择i2.2.2.0,当我想添加另一个字符串时,它没有任何字符串 我的意见是:Python正则表达式匹配多行文本块,python,regex,Python,Regex,我编写了一个正则表达式来选择第一个块,但它不起作用。 它只选择i2.2.2.0,当我想添加另一个字符串时,它没有任何字符串 我的意见是: > 1.1.1.0/24 0.0.0.0 0 32768 i * i2.2.2.0/24 2.2.2.2 0 100 0 i *>i 123.2.2.106 0
> 1.1.1.0/24 0.0.0.0 0 32768 i
* i2.2.2.0/24 2.2.2.2 0 100 0 i
*>i 123.2.2.106 0 100 0 i
*>i 123.1.1.106 0 100 0 i
* i3.3.3.0/24 123.3.3.107 0 100 0 i
* i 123.3.3.107 0 100 0 i
* i123.1.1.0/24 2.2.2.2 0 100 0 i
* i 123.2.2.106 0 100 0 i
*> 0.0.0.0 0 32768 i
* i123.2.2.0/24 2.2.2.2 0 100 0 i
* i 123.2.2.106 0 100 0 i
*> 0.0.0.0 0 32768 i
* i123.3.3.0/24 2.2.2.2 0 100 0 i
*>i 123.2.2.106 0 100 0 i
*>i 123.1.1.106 0 100 0 i
我的结果应该是:
*i2.2.2.0/24 2.2.2.2 0 100 0 i
*>i 123.2.2.106 0 100 0 i
*>i 123.1.1.106
i123.3.3.0/24 2.2.2.2 0 100 0 i
*>i 123.2.2.106 0 100 0 i
*>i 123.1.1.106
结果
我的正则表达式是:
i2.2.2.0/24.*\n123.2.2.106
我需要在python代码中使用的表达式。我找了很多,但找不到结果
谢谢:您想匹配属于所选网络地址的块。连续行可以用空格代替地址来识别。正则表达式
(\* i(?:123.3.3.0/24|2.2.2.0/24).+\n(?:\*.i .+\n)*)
例如,以任意顺序匹配全局修改器2.2.2.0/24和123.3.3.0/24块;请参阅。尝试此^[*>]+i[\d./]+?\s+[\d.]+\s+.*谢谢您的回复,我测试了您的正则表达式,结果是所有行,但我想将第一行与我在结果部分的帖子中写的三行匹配。然后找到第二个。您提供了当前输出和预期结果,但输入是什么?@Stribizev,对不起,我编辑了我的帖子。您没有提到编译正则表达式时使用的标志。您至少需要re.MULTILINE | re.DOTALL