IP: ((1??/d{1,2}|2[0-4]/d|25[0-5])/.){3}(1??/d{1,2}|2[0-4]/d|25[0-5])
single:(?:/+|-)?/d+(?:/./d+)?
[/u4e00-u9fa5]
决策:
(?([a-zA-Z])Yes|No)
(?(groupname|number)Yes|No)
普通:(XXX|XXX)
非捕获:(?:XXX)
名称捕获:(?<ip1>XXX)
引用:/groupname 或 /k<groupname>
(?=XXX):正声明必须在右边,不构成最后匹配
(?!=XXX):负声明必须不在右边,不构成最后匹配
(?<=XXX):必须在左边,不构成最后匹配
(?<!XXX):必须不在左边,不构成最后匹配
(?>XXX)非贪婪匹配,不回溯
替换:
string result = Regex.Replace(s.Trim(), pattern, "${ip1},${ip2}");
$groupname:组
$&:整个匹配
${name}:匹配的最后一个字符串
$':输入字符串在匹配后的所有文本.
$`:输入字符串在匹配前的所有文本
$_:整个输入字符串
$+:最后捕获组
$$:$字符
I:IgnaoreCase
M:Multiline
S:Singleline
N:ExplicitCapture
X:IgnorePatternWhitespace