2011-12-16 106 views
1

我需要一個正則表達式來分割數學表達式,如:數學正則表達式表達

-1*x+2*y 

到:-1*x2*y

我不能只拆分字符串中的+-基礎(因爲有可能是負數)

回答

3

您可以在+-上分割,其前面有一個字母,數字和可能在您的表達式中可接受的其他元素(例如括號)。您可以使用look-behind來完成此操作。

例如在Python,你可以做這樣的:

>>> import re 
>>> re.split('(?<=[a-zA-Z0-9)])[+-]', '-a+10*x-2*y+(-2)-b') 
['-a', '10*x', '2*y', '(-2)', 'b'] 

這分裂每個+-不小的或資本字母或數字或一個右括號前面。您可能需要根據您對「數學表達式」構成的確切規範來調整。

這個或類似的正則表達式應該在其他正則表達式引擎中工作。

+0

這就是我需要的,非常感謝亞當! – Tony 2011-12-18 16:22:54

0

如果你一直各執+,並且只在-分裂,如果它不是在表達式的開頭或跟隨着g a'+'(和空格)?

2

數學表達式是解析器的經典應用程序。

正則表達式不足以完成正確的工作。即使您可以濫用正則表達式庫中的高級功能來強制適用解決方案,結果可能會有些毛病。