Regexp Multiline
本文关键字:Multiline Regexp | 更新日期: 2023-09-27 18:09:58
帮助为这段文本编写正确的regexp
此处需要:
-
匹配所有这些字符串。但关键数字是id 123。有必要覆盖从set policy id 128到exit
-
以及如何将每个字符串放入组中,因为我需要将每一行转换为另一种
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);
您不需要选项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";