2012-06-04 158 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