2011-08-01 14 views
0

私はこのフォーマットJavascriptの文字列の解析

[something](something something) [something](something something)

で文字列を解析しようとしていると私は括弧のセットの間ではありませんすべてのスペースでブレークしたいですか?

js string.splitを正規表現/[^\(].*\s+.*[^\)]/gとして使ってみましたが、うまくいきませんでしたか?どんな提案が高く評価されましたか:-)

EDIT:これはコメントとして公開したいので、答えとして投稿したくありませんが、最終的に解決策を見つけました。

var a = "the>[the](the the) the>[the](the the) the" 
var regex = /\s+(?!\w+[\)])/ 
var b = a.split(regex) 
alert(b.join("+++")) 
+2

は入れ子にすることがカッコことはできますか? – SLaks

+2

(mis)?jwzから引用:「多くの人が問題に直面したら、「私は知っています!私は正規表現を使用します!今、彼らには2つの問題があります。 – riwalk

+0

それを入れ子にする必要はありません。通常は空白文字を含む文字列を防ぐためにそこにありますが、スペースを空けておいてください。 – rubixibuc

答えて

2

あなたの入力は常に一貫していますか?そうでない場合は、それがある場合、それは') ['

であなたの文字列を分割するのと同じくらい簡単かもしれない、それだけで[)の間にあるものを取ることが可能ですか?それとも何らかのネスティングが起こっているのでしょうか?

+0

これは常にそうではない、制御された例だった – rubixibuc

+0

括弧の間にない限り、特定のスペースを壊す必要がある – rubixibuc

+0

@rubixibucまた、SLaksの質問に答える? – gnur

1

ジョブに間違ったツールを使用しています。

this famous postに示されているように、正規表現は非正規言語を解析できず、「平衡括弧」問題は通常の言語では記述できません。

代わりにパーサーを作成しようとしましたか?

EDIT:

あなたが最終的にネスティングが要件ではないことを明らかにしてきたようです。その場合、私はgnurの解決策を提案します。

+0

確かに、規則がよく知られている場合は正規表現を使用してください。 – gnur

+0

引用符のような別のシンボルはどうなりますか、引用符の間にあるものを除いてすべてに分割できますか、それは同じものですか? – rubixibuc

+0

@gnur、それは問題の要点です。入れ子にされたかっこが許されているかどうかはわかりません。ネストされたカッコが許可されていない場合は、それを行ってください。入れ子にされたかっこ*が許されるならば、不潔な子供は処女の血を泣かせ、ロシアのハッカーは彼のwebappを投げ込むでしょう。 – riwalk

0
あなたが尋ねた正確に何

この正規表現がどうなる、そして何よりも:

'[x](x x) [x](x x)'.split(/ +(?![^\(]*\))/);