如果两行session-timeout 10和exec-timeout 10应按该顺序出现,则可以使用两个捕获组。 对于每个捕获组值,请确保其前面的行不交叉匹配line ,例如第一个匹配的 session-和第二个匹配的 exec-,使用负前瞻。 ^line con 0(?:\r?\n(?!line | session-).*)*\r?\n[\p{Zs}\t]*(session-timeout 10).*(?:\r?\n(?!line| exec-).*)*\r?\n[\p{Zs}\t]*(exec-timeout 10)\b ^字符串的开头 line con 0逐字匹配 (?:\r?\n(?!line | session-).*)*匹配所有不以line 或 session-开头的行 \r?\n[\p{Zs}\t]*匹配换行符和可选空格或制表符 (session-timeout 10)捕获组1,逐字匹配(或使用[0-9]+匹配1+个数字) .*匹配该行的其余部分 (?:\r?\n(?!line| exec-).*)*匹配所有不以line 或 exec-开头的行 \r?\n[\p{Zs}\t]*匹配换行符和可选空格或制表符 (exec-timeout 10)捕获组2,按字面匹配 \b防止部分匹配的单词边界 查看regex 101演示和.NET regex演示(单击“表”选项卡查看组)