2014-10-29 56 views
0

有了这个example,我想只匹配运营商在类似C代码,以便其前后匹配运营商只能用正则表达式

例如a+b应该成为a + ba + b不应该加一个空格成为a + b。另一个棘手的问题是我不应该在-2等负数的情况下增加一个空格。当然,我需要了解所有例外情况,例如// work-around等评论中的文字。

下面是我工作的正则表达式:

(?!= |=|&|\||%)(\+|-)(?! |=|\1) 

不幸的是预期负环视不起作用。我该如何解决它?

+0

可以有很多边缘情况下,像'一/ = 5'或一个''++等。我认为你需要澄清问题的所有这些情况。 – anubhava 2014-10-29 17:07:35

+0

一旦你做了替换,你可以做一个差异,并通过改变,试图捕捉你错过的任何例外。 – chilemagic 2014-10-29 17:14:32

回答

0

这只是为了帮助你的正则表达式。
第一个(负向)向前看,应该是(负向)向后看。

我不认为这会帮助解析数学符号。

http://regex101.com/r/lX3aF6/1

# (?<!=[ ])(?<![=&|%])(\+|-)(?!\1|[ =]) 

(?<! = [ ]) 
(?<! [=&|%]) 
(\+ | -) 
(?! \1 | [ =])