2013-01-11 65 views
0

我正在嘗試構建一個派生計算器,因此我將公式分解成組件並匹配每個組件以確定應用的規則,但對於正則表達式我完全陌生。正則表達式匹配數學方程式

現在,我試圖匹配x^n和Ax^nx,其中A和n是常數。這是我的等式:x{0,}^[0-9]{0,}但是當我運行下面的代碼並輸入諸如asdf5x^3之類的代碼時,它們都會返回匹配結果,只有x^3應該返回。方程中有問題還是我在下面應用它的方式?

NSRegularExpression* regex = [[NSRegularExpression alloc] initWithPattern: @"x{0,}^[0-9]{0,}" options: NSRegularExpressionCaseInsensitive error: nil]; 

if ([regex numberOfMatchesInString: equation options: NSMatchingHitEnd range: [equation rangeOfString: equation]] > 0) 
{ 
    NSLog(@"Match x^n"); 
} 
else 
{ 
    NSLog(@"Not x^n"); 
} 

回答

0

^描繪了字符串的開始,所以應該被轉義像\^

regex應該

@"\d*x\\^\d*"

\d代表一個數字..

*手段匹配0到ma ny \d

+0

幾乎完美。出於某種原因,這不是理解\ d所以x^3會起作用,但3x^3不會。我用[0-9] *替換了\ d *並且它可以工作。丹克斯 – Chris