0

これが事です:

パターンに従って、いくつかのデータを保存するファイルがあります。

item1:value1 item2:value2 item3:value3 // \n
item1:value1 item2:value2
item1:value1 item2:value2
// and so on...

// item3:value3 IS OPTIONAL

次に、ファイルのデータを に保存しNSStringて処理します。

value2 を一致させたいのですが、各行の peenceitem3:value3はオプションです。

そこで、?正規表現演算子を使ってみましたが、使い方がよくわかりません。

したがって、通常、次のパターンに一致させようとしました (これは機能しません、ofc):

@"item1:.* item2:(.*) (item3:.*)?\n"

よりよく説明すると、2 つの条件を 1 に再グループ化したいと思います。

@"item1:.* item2:(.*) item3:.*\n" // Case 1 : item3:.* present in the line
@"item1:.* item2:(.*)\n"          // Case 2 : item3 not present

ですべての一致を返す個人用関数を既に作成していることに注意してくださいNSMutableArray

これが十分に明確であることを願っています:/

助けとアイデアをありがとう。

4

2 に答える 2

0

したがって、テキストに確実に一貫したパターンがある場合は、そのパターンを分析して、正規表現と Objective-C ロジックを構築できます。

最初に、関心のある要素を確実に分離する部分文字列を特定します。貼り付けられたものから仮定すると、最初に各項目を改行セパレーターで区切ることができます。行の配列を作成します。これは、一連の番号付きアイテムが何らかの形で関連している場合に便利です。

次に、貼り付けた内容から、関心のある各行の部分を特定する方法が複数あることがわかります。

繰り返しになりますが、文字列に何が含まれ、何が含まれないかを単純に把握する必要があります。

アイテム自体に空白が含まれていない場合にのみ、空白を使用して個別のアイテムをさらに識別することができます。項目が次のように定義されていることを確認することしかできない場合は、少し作業が必要です: 定義: 項目は、次のパターンを持つ文字列の直後の文字列です: 行頭または単一のスペースの後に「項目」が続き、数値 1、2、または 3 の後に「:」が続く

値の文字列の末尾は、行末または別の項目を開始する区切り記号によって区切られます。

これから、パターンの定義を正規表現に置き換えることができるはずです。

プログラミング言語のロジックと条件を使用してこれを複数のステップに分割し、単一の正規表現ですべてを実行しようとしないと、より簡単になります。

于 2013-05-21T09:45:47.937 に答える