2010-10-19 53 views
2

我有一個字符串像這樣被分隔|,可以包含之間的任何字符:我想找到一個返回正則表達式C#正則表達式忽略轉義字符

"one two|three four five|six \| seven eight|nine" 

one two 
three four five 
six | seven eight 
nine 

我可以考慮如何做這個,但是,我不太瞭解正則表達式。我基本上想匹配,直到達到|之前沒有\。我該怎麼做呢?我知道有一個後臺跟蹤器,但我不知道該怎麼做。

回答

3

基本上你想找到這種模式的實例:

@"([^|\\]|\\.)+" 

這符合:

  1. [^|\\] —從管道或反斜槓任何字符一邊。
  2. \\. —任何字符都帶有反斜槓。
  3. (...|...)+ —一個或多個上述(轉義)字符。

\\.結構是好的,因爲它可以讓你逃脫任何字符,特別是其他反斜槓。這讓你有一個字符串的結尾反斜槓,例如:

"backslash \\|forward slash /|pipe \|" 
1
Regex.Split(input, @"(?<!\\)\|"); 
  • (?<!\\) - 負回顧後。沒有前\
+1

一個負的外觀後面不能正確分析偶數反斜槓的。例如。輸入:第一個\\ |第二個
應該返回:第一個\\,然後第二個 – 2016-10-19 18:29:48