2017-08-14 52 views
0

例如,有@"javascript:viewData(3713, 'A', 89360)"字符串。用於檢測javascript調用函數的regEx表達式

我想從字符串中提取3713,A和89360。

對於Java,「viewData\(([^\(]*),[\s\S]\'([^\(]*)\',[\s\S]([^\(]*)\)」可以成功提取這些字符串。

但是,我無法在iOS Objective-C中成功提取它們。

我的代碼如下:

NSString *searchedString = @"javascript:viewData(3713, 'A', 89360)"; 
NSRange searchedRange = NSMakeRange(0, [searchedString length]); 
NSString *pattern = @"<HERE THE PATTERN NEEDED>"; 
NSError *error = nil; 
NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:&error]; 
NSTextCheckingResult *match = [regex firstMatchInString:searchedString options:0 range:searchedRange]; 

然後匹配的字符串可能爲:

[searchedString substringWithRange:[match rangeAtIndex:1]] ..等等。

如何設置圖案?

+0

更新您與您的Objective-C的真實目的是試圖格局問題。並顯示你獲得的結果。 – rmaddy

回答

1

基本上,正則表達式模式也應該在Objective-C中工作。

但是你要逃避所有的反斜線:

NSString *pattern = @"viewData\\(([^\\(]*),[\\s\\S]\\'([^\\(]*)\\',[\\s\\S]([^\\(]*)\\)"; 
+0

你也需要在Java中做同樣的事情,所以這可能不是問題(這就是爲什麼我要求OP更新他們的問題)。 – rmaddy

+0

@rmaddy它似乎是這個問題;-) – vadian

+0

由於OP拒絕更新他們的問題,我們只能假設如此。 – rmaddy