RegexOptions regexOptions = new RegexOptions
if (cbIgnoreCase.Checked) regexOptions |= RegexOptions.IgnoreCase;
if (cbCultureInvariant.Checked) regexOptions |= RegexOptions.CultureInvariant;
if (cbMultiLine.Checked) regexOptions |= RegexOptions.Multiline;
if (cbSingleLine.Checked) regexOptions |= RegexOptions.Singleline;
if (cbIndentedInput.Checked) regexOptions |= RegexOptions.IgnorePatternWhitespace;
| 是或运算。
-=
*=
/=
%=
^=
|=
&=都分别表示int i = 5;
i+=2; 表示 i = i + 2;
以此类推所以
|=
就表示 regexOptions = regexOptions | RegexOptions.IgnoreCase;
以此类推。
是的,位运算操作,与或非的或,表示合并的意思。 0 1 => 1, 1 1=>1
如果选择了忽略大小写的选项框,那么无论regexOptions是什么,都二进制加上RegexOptions.IgnoreCase标记。假设 regexOptions = 00000111(二进制),IgnoreCase = 01000000
那么或运算后 = 01000111
if (cbIgnoreCase.Checked) regexOptions |= RegexOptions.IgnoreCase;
if (cbCultureInvariant.Checked) regexOptions |= RegexOptions.CultureInvariant;
if (cbMultiLine.Checked) regexOptions |= RegexOptions.Multiline;
if (cbSingleLine.Checked) regexOptions |= RegexOptions.Singleline;
if (cbIndentedInput.Checked) regexOptions |= RegexOptions.IgnorePatternWhitespace;
就是说匹配正则表达式时,不考虑大小写