これは簡単な正規表現ですが、いくつかのオンラインテストツールを試してみましたが、動作しますが、コードで実行した場合は動作しません。ココアのこの単純な正規表現で何が問題なのですか
BEGIN EDIT:これはまったく一致しません。私がしようとしているのは、設定ファイルの行にhttp
設定が含まれているかどうかを確認することです。したがって、行がextraintf=
の場合はextraintf=http
、行がextraintf=rc:ncurses
の場合はextraintf=rc:ncurses:http
に変更し、行が#extraintf=
の場合はextraintf=http
に変更したいと考えています。私はその行の位置と長さを見つけるために正規表現を使用しています。上記の罰金を行うテスト済みの作業用コードを書いた行の長さと長さがあれば、それはマッチの範囲を見つけることだけです問題。 END EDIT
は、ここに私の正規表現です:
はFile1:
# Interface module (string)
#intf=
# Extra interface modules (string)
extraintf= //match this line
# Control interfaces (string)
#control=
ファイル2:私はそれは、これらのファイルのすべての中間ラインを見つけたい
^#?extraintf=.*$
# Interface module (string)
#intf=
# Extra interface modules (string)
extraintf=rc //match this line
# Control interfaces (string)
#control=
ファイル3:
# Interface module (string)
#intf=
# Extra interface modules (string)
#extraintf= //match this line
# Control interfaces (string)
#control=
そして、私は試合をチェックする方法が使用されています
//check if file exists
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:fullPath isDirectory:&isDirectory];
if (isDirectory || !fileExists) {
return;
}
//get the settings file
NSError *error;
NSString *settingsString = [NSString stringWithContentsOfFile:fullPath encoding:NSMacOSRomanStringEncoding error:&error];
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^#?extraintf=.*$" options:NSRegularExpressionCaseInsensitive error:NULL];
NSRange rangeOfFirstMatch = [regex rangeOfFirstMatchInString:settingsString options:0 range:NSMakeRange(0, [settingsString length])];
if (!NSEqualRanges(rangeOfFirstMatch, NSMakeRange(NSNotFound, 0))) {
//got a match
}
else {
//no match
}
これは 'regularExpressionWithPattern:@"^extraintf = $ "'あなたがペーストしたコードでは正しいですか?それは '#'と '。*'が欠けています...さらに、何がうまくいかないのか説明できますか?全くマッチしない?場合の1つでは? – sergio
申し訳ありませんが、私はテストしていたコードをパースしてコピーしました。それはまったく一致を見つけることはありません。 – lms