2016-05-16 7 views
0

JavaScriptで次の正規表現を使用しています。3つのキャプチャグループに正規表現を分割するのが難しい

/^([^\s]* >)(.*)/gmi

と私はそれが次のテキスト上で実行したいです。

危険>これは、最終的な結果は3つの取り込まフィールドでなければならないいくつかの危険通知テキスト

あります。 '危険'、 '>'、 'これは危険の通知テキストです。'それはしかし、今あるとして

、私は唯一の2

取得「危険>」「これは、」いくつかの危険通知テキストです。

残りの部分と '>'を区別する方法はありますか?

+1

キャプチャグループは2つしかありません。あなたはちょうどあなたがちょうど2つ持っているのも不思議ではありません。['/^(\S*)\s*(>)\s*(.*)/gm'](https://regex101.com/r/kV1xY6/1) - しかし、なぜ私は知られている単一の '>'を捕まえるのか分かりません。 –

+0

それは私が助けを求めていることです。この正規表現を作るのに私は長い時間がかかりました。別の捕捉グループをどうやって取得するのかはわかりません。これまでのところ、たくさんのドキュメントを読んでいます!それは本当に混乱するものです。 @。@ – Ciel

+0

'^([^ \ s] *)\ s +(>)\ s +(。*)'を使用してください。 – rock321987

答えて

1

は行います

(^\S+)\s+(>)\s+(.*) 

さて、\1\2>あると\3this is some danger notification textで、dangerです。新しいキャプチャグループを追加する

Demo

+0

あなたからの信じられないほどの豊かな流出。どうもありがとうございます。これがうまくいって、@ジョンクリフォードの投稿が働いた。私はどちらが正しい答えとしてマークするか分からない! – Ciel

+0

ありがとうございました。昨夜、regex101を使って最初のサイトを作っていました。私はまだ別のキャプチャグループを作成しなければならないことに気付くまで、私はそれをかなり誇りに思っていました!私はフィルタリングするのがとても簡単だとは思いません。 2番目のキャプチャグループを括弧で囲んで読みやすくするのは安全ですか? – Ciel

+0

Ciel:カッコ内のグループをラップするのは、キャプチャグループを作る*ことです。あなたは括弧を使って読みやすくすることができますが、通常は?をつけることで非捕捉グループにする必要があります:?:最初に(?:ここにあるものはすべてキャプチャされません) –

1

は、あなたがグループに何をしたいの周りに括弧を置くのと同じくらい簡単です。あなたの正規表現では、>を最初のキャプチャグループの一部として含めるので、それだけでは取得できません。

^([^\s]*) (>) (.*) 

これに

変更は別途最初の単語、>、および次のテキストをキャプチャします。

実際の正規表現の動作を確認するには、https://regex101.com/r/dR5rK5/1を参照してください。

+0

'[^ \ s] '=' \ S'です。 –

+0

うわー。正規表現コミュニティからの流出は全く新しいものです。皆さんは素晴らしいです。そのような小さな時間で多くの情報。これがうまくいって、@heemaylの投稿が働いた。私は受け入れるか分からない! – Ciel

+1

私はWiktorを知っていますが、そのパターンはパターンを書く良い方法ではありませんでした。私はOPの実際の質問に焦点を当てていました。これは第3のキャプチャグループを取得する方法でした。 :P –

関連する問題