2016-03-30 33 views
-1

テキストから特定のパターンの値を抽出しようとしています。正規表現での正規表現の一致値

サンプルテキスト:

Test: [] 
subtests: [a] 

私は、サブテストの[]内のデータに何を正確ラインsubtests: [a]を抽出したいですか。 正規表現と一致すると、間違った値が返されます。私がここで間違っていることを確かめない。

https://jsfiddle.net/k8e9hu0e/2/

誰も私を助けることはできますか?

+0

すべての試合を通じて、 '/ G'グローバル修飾子とループを使用してください。 '[...]'の中に内容が必要な場合は、キャプチャグループが必要です。 [このフィドル](https://jsfiddle.net/h8bf0ox5/)をチェックしてください。 –

+0

@WiktorStribiżew、あなたはコードを修正してコミュニティに解決策を提示していただけますか?私は正規表現には新しく、それは私のような他の人には役に立ちます – Reddy

+1

https://jsfiddle.net/h8bf0ox5/をチェックしてください。または、一致する値だけを表示する必要がある場合は、 '.exec(string)[0]'を使用してください - https://jsfiddle.net/u1paL0y2/ –

答えて

1

ここにはWorking Fiddleがあります。その中にキャプチャを持っている^subtests: (.*)

..あなたの問題を説明する(.*).*

を変更し、この正規表現:だから唯一の変化はcapturesすなわちを削除することでした。そして、あなたがこの正規表現のマッチを見つけたら、それは正規表現マッチのすべてを取得し、次にすべてのキャプチャを返します。したがって、最初のセットはsubtests: []で、次にキャプチャのセットは[]です。したがって、あなたの出力はsubtests: [],[]でした(,に注意してください)。

+0

これを明確にしてくれてありがとう:) – Reddy

+0

@Reddyこれが正しい解決策だったら、答えとしてマークすることができます。 –

+1

正しい解決策かもしれませんが、説明は正しくありません。 *はすべての正規表現マッチのセットを提供します* - 'RegExp#exec'はすべてのマッチの配列を生成しません。すべての*マッチを得るためにループを使用する必要があります*。 –

1

ここにライブデモがあります。フォークされ、あなたのソースから修正されました。 https://jsfiddle.net/soonsuweb/aj38617b/

var data = `blur blur subtests: [] blur\nblur`; 
var regex = /subtests: \[.*\]/; 
var test = regex.exec(data); 
alert("Op: " + test);