我正在编写一个正则表达式,其中我需要为比赛分配多个选项,在此期间,我偶然发现了一段代码,如下所示:
Dim options As RegexOptions = RegexOptions.Multiline Or RegexOptions.IgnoreCase
此代码似乎可以按照我的需要工作,但它引发了一个问题,即or
关键字在此代码行中的作用是什么?
似乎正在为一个变量分配多个值。
目的和局限性是什么?
以下代码可以类似使用吗?
Dim options As RegexOptions = RegexOptions.Multiline Or
RegexOptions.IgnoreCase Or RegexOptions.IgnorePatternWhitespace
答案 0 :(得分:1)
documentation解释了每个选项的数值。使用OR运算符将执行bitwise operation。
让我们举个例子。 RegexOptions.Multiline的数值为256,而RegexOptions.IgnoreCase的数值为1。用二进制表示。
256 = 000100000000 (This is the bit for multiline)
1 = 000000000001 (This is the bit for IgnoreCase)
256或1 = 257
257 = 000100000001
如您所见,257包含多行和igneecase的位。