如何忽略空格以使用转义序列

时间:2013-07-17 17:12:19

标签: c#

if (Regex.IsMatch(line, "^([\\w\\-\\ ]+)\\ ,([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+)", RegexOptions.IgnorePatternWhitespace))

如何使用ignorepatternwhitespace来处理上述问题。它通常与@“....”一起使用,但由于引号和反斜杠的数量,我选择了“...”并使用反斜杠而不是@“...”来逃避它们,并将我的引号加倍。但现在它只能作为一条巨大的线而不是整齐的小块。

1 个答案:

答案 0 :(得分:1)

原因是语言规范禁止来自生成行的正常字符串文字("Normal String Literal") - 也就是说,它可能不包含嵌入的文字换行符。

像这样的At-strings

@"This
string
spans
lines
"

可以跨越上面的行。

你可以做的是利用C#的常量折叠并沿着这些线构建你的字符串:

Regex foo = new Regex(
                    " part 1"
                  + " part 2"
                  + " part 3"
                  + ...
                , RegexOptions.IgnorePatternWhitespace
                ) ;