帮助为这样的文本写正确的正则表达式。
需要:
匹配所有这些字符串。但关键数字是 id 123 。 有必要从设置政策ID 128 到退出
以及如何将每个字符串放入组中,因为我需要将每一行转换为另一种
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);
答案 0 :(得分:2)
您不需要Multiline
选项,需要RegexOptions.Singleline
:
var matchesPolicy =
Regex.Matches(reader.ReadToEnd(), patternPolicy,RegexOptions.Singleline);
请参阅Regular Expression Options:
多 米 使用多行模式,其中^和$匹配每行的开头和结尾(而不是输入字符串的开头和结尾)。有关更多信息,请参阅多行模式。
SINGLELINE 小号 使用单行模式,其中句点(。)匹配每个字符(而不是除\ n之外的每个字符)。有关更多信息,请参阅单线模式。
然后你可能需要通过在量词中添加set policy (id)
来使量词库变得懒惰以避免从第一个exit
到最后一个?
进行匹配:
string patternPolicy = @"set policy (id)(.+?)exit";
另一件事是,为什么要将“id”放入捕获组? 没有意义。
string patternPolicy = @"set policy id(.+?)exit";