2012-06-04 64 views
0

這可能是一個非常基本的問題,但我找不到任何答案。我需要通過兩個或更多空格或等號來匹配一個字符串。正則表達式「或」表達式

當我拆分此字符串:9 x 13 = (8.9 x 13.4) (89 x 134)( +)我得到:

part 0: 9 x 13 = (8.9 x 13.4) 
part 1: (89 x 134) 

當我與(=)拆分它,我得到:

part 0: 9 x 13 
part 1: (8.9 x 13.4)   (89 x 134) 

如何通過拆分BOTH?喜歡的東西:(=)OR( +)

編輯: 這不起作用(=)|(+),我期待:

part 0: 9 x 13 
part 1: (8.9 x 13.4) 
part 2: (89 x 134) 
+3

你可以單獨用正則表達式分析嵌套結構! – leppie

+0

你試過了:'(=)|(+)'? – Vikas

+0

@leppie,你確定*可以*,但這並不意味着它是最好的方式。 – Qtax

回答

2

你的正則表達式應該有工作,但它會留下那名前後的空格=。假設你真的在( +)部分中使用了兩個空格(通過SO的格式將其歸一化爲一個空格)。這一次得到你說你想要的確切結果:

@" {2,}|\s*=\s*" 
+0

爲什麼會有兩個空格?該問題指定:「一個或多個空間」。但也許這個問題是錯誤的。 – PauliL

+0

@PauliL我的錯誤。它意味着兩個或更多的空間。 – David

+0

@PauliL:在我回答之前,我幾乎總是對問題進行編輯,以確保我看到了我應該看到的內容。在這種情況下,它顯示第一個正則表達式中有兩個空格,源字符串的相關部分中有多個空格。我試圖重新設置問題的格式,以便所有人都可以看到,但OP卻超過了我。 –

1

簡單,

Pattern = "\s*=\s*|(?!\))\s+?(?=\()" 
+0

+1,謝謝。儘管使用另一個。 – David

0

您可以使用這樣的正則表達式:[= ]+

var regex = new Regex("[= ]+"); 
var parts = regex.Split("this is=a test"); 

// parts = [ "this", "is", "a", "test" ] 

如果你想保留分隔符括在括號正則表達式:([= ]+)

+0

用我的字符串解析它。它給出了九個結果而不是三個。 – David