Regexp Multiline

本文关键字:Multiline Regexp | 更新日期: 2023-09-27 18:09:58

帮助为这段文本编写正确的regexp

此处需要:

  1. 匹配所有这些字符串。但关键数字是id 123。有必要覆盖从set policy id 128exit

  2. 以及如何将每个字符串放入组中,因为我需要将每一行转换为另一种

set policy id 128 
from "Trust" to "Untrust" "lm pool" "172.16.2.2/32" "ANY" permit 
set policy id 128
set dst-address "MIEP"
set dst-address "MIEP WS"
set dst-address "radius1"
set dst-address "radius2"
exit

如何补充我的创作:

StreamReader reader = new StreamReader(opendialog.FileName);
string patternPolicy = @"set policy (id)(.+)exit";
var matchesPolicy = Regex.Matches(
    reader.ReadToEnd(), 
    patternPolicy,
    RegexOptions.Multiline);

Regexp Multiline

您不需要选项Multiline,您需要RegexOptions.Singleline:

var matchesPolicy = 
    Regex.Matches(reader.ReadToEnd(), patternPolicy,RegexOptions.Singleline);

参见正则表达式选项:

多行米使用多行模式,其中^和$匹配每行的开始和结束(而不是输入字符串的开始和结束)。有关更多信息,请参见多行模式。

单行模式年代使用单行模式,其中句点(.)匹配每个字符(而不是'n以外的每个字符)。有关详细信息,请参见单行模式。

那么你可能需要使你的量词懒惰,以避免匹配从第一个set policy (id)到最后一个exit通过添加一个?到你的量词:

string patternPolicy = @"set policy (id)(.+?)exit";

另一件事是,为什么你把"id"放到一个捕获组?没有意义

string patternPolicy = @"set policy id(.+?)exit";