2013-07-17 36 views
0
if (Regex.IsMatch(line, "^([\\w\\-\\ ]+)\\ ,([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+)", RegexOptions.IgnorePatternWhitespace)) 

如何獲得ignorepatternwhitespace以使用上述操作。它通常與@「....」一起工作,但由於引用和反斜槓的數量,我使用「...」進行轉義,並使用反斜槓而不是@「...」將它們轉義出來,並將我的引號加倍。但現在它只能作爲一個巨大的線條,而不是整齊的小塊。如何讓忽略空白處理轉義序列

+0

你能給與@的工作版本‘......’還有非工作版本,並舉例說明它應該和不應該匹配?很難猜測您對現有信息的期望。 – Weeble

+0

根據你的模式,我懷疑RegEx是你正在解析的一個很好的解決方案。 – evanmcdonnal

+1

[**不要忘記檢查您過去的問題和未來的問題的正確答案,因爲它也會幫助其他人,請參閱這裏。](http://stackoverflow.com/about) – Prix

回答

1

原因是語言規範禁止跨越行的正常字符串文字("Normal String Literal") - 也就是說,它可能不包含嵌入的文字換行符。

在串這樣

@"This 
string 
spans 
lines 
" 

可能跨越行如上述。

你可以做的是把C#的常量摺疊的優勢,並沿着這些線路建立您的字符串:

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