2017-06-15 12 views
-2

私は、この文字列(ファセット検索クエリを)持っている:正規表現の名前と値のペアをコロンで区切って解析するにはどうすればよいですか?

var q = ":salesRevenue:brand:Tchelicon:brand:Eurocom 
:brand:Turbosound:brand:Labgruppen:brand:Tannoy:brand:Klarkteknik 
:brand:Midas:brand:Bugera 
:brand:Tcelectronic 
:eligibleProduct:0010000066:publicProduct:false:brand:Behringer:productFilter:All:"; 

私は3つの別々の文字列に、それを分割したい:q_brand、q_pubsとq_product、私のクライアントは、正規表現でそれをすべてを望んでいます。

q_brandは、「brand:」だけが前に付いた値の値で構成されています。

q_pubsは、 "eligibleProduct:"と "publicProduct:"の前にある値です。

q_productは、 "productFilter:"の前にある値です。

は、私は、彼らが(元の位置を入れ替える場合でも、それらをキャプチャできるようにしたいの位置のように:ブランド:ベーリンガー:)

最終結果があることが予想される

var q_brand = "brand:Tchelicon:brand:Eurocom 
:brand:Turbosound:brand:Labgruppen:brand:Tannoy:brand:Klarkteknik 
:brand:Midas:brand:Bugera 
:brand:Tcelectronic:brand:Behringer"; 

var q_pubs = "eligibleProduct:0010000066:publicProduct:false"; 

var q_product = "productFilter:All"; 

I 1つのインスタンスといくつかの他のインスタンスでbrand:apple:brand:orange:product:hello:brand:grain:(brand:.+:)を使用してみましたが、予期しない結果が発生しました。

+1

それはセミではありません結腸。コロンです。セミコロンは ';' –

+0

@SagarVです。申し訳ありません。それはちょうど正直な間違いであることを確認してください。 – jestrange

+0

「簡単な」正規表現の質問はここに属していないと考える派閥がいると思うので、すぐにそれら(そしてその答え)を下げます。エキスパートにとっては、あなたが既にどのように知っていたのかは、それが簡単であることを覚えておくことは難しいかもそれを汗ばませないでください。 –

答えて

0

あなたはあなたの試合の主な問題は、マッチに後続のコロンが含まれていることでした。後の試合に干渉しました。

一般的なパターンは(foo:[^:]+)/g)です。これはフィールド名 "foo"に続いてコロンが続き、その後にコロンではない文字が0より大きい数字が繰り返して続きます。その後、結果はあなたの希望する出力に合うように(コロンで再度)結合されます。

q_pubため

そんなに「\ワット+製品は、」する一般化されて、二つの異なるフィールド名を持っている(製品に続く文字の任意の数の文字に一致します。)

var q = ":salesRevenue:brand:Tchelicon:brand:Eurocom:brand:Turbosound:brand:Labgruppen:brand:Tannoy:brand:Klarkteknik:brand:Midas:brand:Bugera:brand:Tcelectronic:eligibleProduct:0010000066:publicProduct:false:brand:Behringer:productFilter:All:"; 
 

 
var q_brands = q.match(/(brand:[^:]+)/g).join(":"); 
 
var q_pub = q.match(/(\w+Product:[^:]+)/g).join(":"); 
 
var q_products = q.match(/(productFilter:[^:]+)/g).join(":"); 
 

 
console.log(q_brands); 
 
console.log(q_pub); 
 
console.log(q_products);

関連する問題