2016-07-20 5 views
0

私は、省略形の状態名を減らすための正規表現を作成しようとしています。たとえば、 "New York"という文字列を "NY"に置き換える必要があります。iOSでグローバル検索で正規表現を書くには?

これは/[^[A-Z]/gに付属しています。私はここでそれをテストした:http://regexr.comとそれは動作します!

私はobjective-cコードで書いてもうまくいきません。

NSError *error = nil; 
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[^A-Z]/g" options:NSRegularExpressionCaseInsensitive error:&error]; 

NSString *abbreviation = [regex stringByReplacingMatchesInString:self.state options:0 range:NSMakeRange(0, [self.state length]) withTemplate:@""]; 

私は正規表現をあまり経験していません。なぜそれは働いていないのですか? (間違っているかもしれませんが、見つけられません)

+0

コードが空にする一致文字列に置き換えられます、* UF –

+0

の値が何であるかを私は最高の理解を与えるために、質問を編集しました。 – ikkarion

+1

"私はここでそれをテストしました:http://regexr.comそれは動作します!"はい、正規表現は味があります。あなたは間違った味を試しました。 :) – matt

答えて

2

\gは正規表現でですか?オプション0@"[^A-Z]"または@"[^A-Z]+"を試す:検索または置換する正規表現を使用したIOSで

は本当に貪欲で、検索したり、スコープを交換すると正規表現関数のパラメータにrangeに依存しています。

NSError *error = nil; 
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[^A-Z]" options:0 error:&error]; // or @"[^A-Z]+" 

NSString *UF = [regex stringByReplacingMatchesInString:@"New York" options:0 range:NSMakeRange(0, [@"New York" length]) withTemplate:@""]; 
+0

答えをありがとう。 @ "[^ A-Z] +"は機能します!私は/ gが何を意味するのか分からない。私はちょうどそれが検索の状態を「保存する」ことを知っています。 – ikkarion

+1

@ikkarionはい\ gは他言語のグローバル検索です。 iOSでは動作しません – larva