2017-08-14 9 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

更新あなたの質問:

は、しかし、あなたはすべてのバックスラッシュをエスケープする必要があります。得られた結果を表示します。 – rmaddy

答えて

1

基本的に、正規表現パターンはObjective-Cでも動作するはずです。あなたが実際にObjective-Cで試したパターンと

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

あなたも同様にJavaで同じことをする必要がありますので、それは問題ではありません(私はOPに質問を更新するように頼んでいます)。 – rmaddy

+0

@rmaddyそれは問題だったようです;-) – vadian

+0

OPは質問を更新することを拒否しているので、私たちはそのように仮定しなければなりません。 – rmaddy

関連する問題