2017-03-02 12 views
0

ような文字列が与えられる:各ラインのサブストリングを非貪欲に分離するか?

foo/**hello**/baré 
foo/crazy/**hello**/baré 
**hello**/crazy/baré 

JS介しhello**間のテキスト)を単離する方法は?(正規表現検索?)

(出力は、各ラインのために望んでいたhelloです)


はこれまでのところ、私が失敗します。.*?\*\*(.*?)\*\*.*? =>$1は私を与える:

hello/baré 
hello/baré 
hello/crazy/baré 
+0

出力を得るために置き換えていますか?最後の '。*? 'は文字列の最後に一致するのが欲しいです。あなたの正規表現との一致を使用する場合、正常に動作するはずです。 –

答えて

3

あなたは可能性があり*:

const inputs = [ 
 
    'foo/**hello**/baré', 
 
    'foo/crazy/**hello**/baré', 
 
    '**hello**/crazy/baré' 
 
]; 
 

 
inputs.forEach(input => { 
 
    const matches = input.match(/.*\*\*([^*]+)\*\*.*/); 
 
    console.log(matches[1]); 
 
});
を除く任意の文字に一致する式を使用してください言葉で

+0

各行の出力は 'hello'です。私のテストによると、あなたの答えはそれをしません。 – Hugolpz

+0

"hello"をコンソールに3回印刷する実行可能コードスニペットを追加しました:-) –

+0

ああ。あなたは '.match()'を使います。 – Hugolpz

2

、ちょうど\w使用:

\*+(\w+)\*+ 

Demo

したい場合は、文章や持っている場合は、特に2 *がちょうど

\*{2}(\w+)\*{2} 

を行います段落または混在文字、文字の検索開始区切りと終了区切り以外の区切り文字:

\*{2}([^*]+)\*{2} 
+0

答えをありがとう!私はあなたの考えを '{2}'としました:D – Hugolpz