2012-01-30 22 views
0

私は以下の文字列形式を持っています。文字列検索に一致するパターンはありますか?/

({'BTAddress': <'00:22:58:07:76:9B'>, 'Name': <'Some-Name'>, 'Alias': <'some-Name'>, 'Class': <uint32 12316>, 'Adapter': <objectpath '/org/bluez/3196/hci0'>},) 

私は、代わりに生の解析を行うのパターン賢明な解析を使用するために何かアドバイスをC.上記文字列を解析したいと思いますか? 助けてくれてありがとう。

+0

あなたはCでJSON文字列を解析しようとしていますか?あなたがそのように問題をフレーズにすると、答えの見方が異なるかもしれません。 – selbie

答えて

1

strtokhttp://www.cplusplus.com/reference/clibrary/cstring/strtok/を使用できます。 動作させるためには手作業で作業する必要がありますが、正常に動作します。

:あなたが渡したcharポインタが操作されます。

+0

strtokは明白な解決策のように思えますが、strtokでコンマ( "、")を使って各キー:値のペアを区切ろうとすると、セット内の値のいずれかにコンマが引用符で囲まれていると、 – selbie

+0

私は 'strtok()'が "*生の解析をしている*"にかなり近いとお勧めします。 – Clifford

+0

文字列をキー値トークンに分割し始めます。その後、トークンを分離して、開始点と終了点を切り取ることができます。 これは非常に素朴な構文解析ですが、どのような文字列を解析したいのかを指定することなく、omu_nerguのような正規表現と組み合わせることで、私にはうまく見えます。 – ezdazuzena

1

すべてのPOSIX準拠のCコンパイラは、<regex.h>を提供する必要があります。正規表現を使用すると、これをサポートできます。

+0

私は間違っている、私は正規表現を見て、私はキー/バリューメソッドを取得する方法を見ていないか分からない?..任意のアドバイス? – Whoami

0

正規表現ライブラリはおそらく必要なものです。 regular expressionライブラリを持つGNU Cライブラリを使用している場合は、pattern matchingになります。 Win32コンパイラでは、GNUコードのRegex for Windowsポートを使用できます。

0

次のように私の提案は、次のとおりです。

A) try using strtok to split the text at ',' and then split the resulting subtexts only once at ':' ,that way you would get the key,value pairs you desire. 
B) use a regEx api under C that would basically solve your issue. 

また、私はあなたの解析されたテキストのためのCの下のキーと値のストアを探して提案するかもしれません(C++、1つを持っているが、私は本当にCのことは知らない)

+0

C++のキー/値に関する追加情報を親切に提供できますか? – Whoami

関連する問題