2017-09-27 11 views
0

\ n(\\n)と\ n \ n(\\n\\n)(エスケープされた改行)を含む文字列があります。1つ以上のエスケープされた改行文字を含む文字列を分割するにはどうすればよいですか?

'a\\na'.split(/\\n+/) 
> [ 'a', 'a' ] 
'b\\n\\nb'.split(/\\n+/) 
> [ 'b', 'b' ] 

しかし、私の例ではnにのみ適用されますので、私は、どのように\\nため+を適用しないと私は[ 'b', '', 'b']

を得る:

私はこのように分割したいです私はグループ化しようとしました:(\\n)+または(:?\\n)+しかし、それは動作していないようです。

+0

これはエスケープされていません。あなたは '' a \\ na''を意味しましたか? – Ryan

+0

あなたが数量化したいシーケンスを持っているなら、それをグループでラップしてください: '/(?:\\ n)+ /' –

+0

あなたは\ nを別の文字に置き換えて文字列を分割できます。例えば'' \ na'.replace( "\ n"、 "_")。split( "_") ' –

答えて

2

splitから余分なエントリを避けるために、非キャプチャグループが必要ですが、構文は(:?ではなく、(?:です。

'b\\n\\nb'.split(/(?:\\n)+/) 
関連する問題