2017-12-10 30 views
0

2つの文字列の間の文字列を、改行を含むRegexと一致させたいと思います。Regex JS:改行を含む2つの文字列の間のマッチング文字列

{count, plural, 
    one {apple} 
    other {apples} 
} 

私はplural,oneの間で文字列を取得する必要があります。

は例えば、私は次の文字列を持っています。それは\n*space**space*になります。しかしないJSで、

/(?:plural,)(.*?)(?:one)/gs 

それは動作します: 私はこの正規表現を試してみました。どのようにJavaScriptでそれを行うには?改行文字を含むすべてのものと一致するように

答えて

3

、あなたはそれが間違った正規表現エンジンを使用してテストするので仕事を[\s\S][^]

var str = `{count, plural, 
 
    one {apple} 
 
    other {apples} 
 
} `; 
 
console.log(str.match(/(?:plural,)([\s\S]*?)(?:one)/g)); 
 
console.log(str.match(/(?:plural,)([^]*?)(?:one)/g));

+0

ここで 'm'は冗長です。 – revo

+0

はい、 'm'は冗長です。指摘していただきありがとうございます。理由を知っていますか? –

+2

単に 'm'が'^'/' $ 'アンカーの平均値に被験者の文字列の開始/終了(デフォルトの動作)または行の開始/終了となるためです。私はあなたがマルチラインとして言及しているのは、 '.'が改行文字を受け入れることを可能にするdotall' s'フラグですと思います。サポートされていないので、 's'はうまくいけばES2018に同梱されます。 – revo

1

をdoesn't使用することができます。

`/s` does not exist in the JS regex engine, only in pcre 

それはのようなものでなければなりません:

/(?:plural,)((.|\n)*?)(?:one)/g 

はそれがお役に立てば幸いです。

関連する問題