2013-08-02 43 views
6

私は孤立した改行文字(\n)にマッチする正規表現を構築しようとしています。1つの改行に一致する正規表現。正規表現をダブル改行に一致させる

同様に、私は彼らが最後の改行にマッチ(あまり\n\n\nまたは\n\n\n\n\n\nなど

\n(?!\n)\n\n(?!\n)試合のような改行文字の長いランの一部ではない二重改行(\n\n)を一致させるために、別の正規表現を必要とします改行のより長いシーケンスの中で)。代わりに私は何をすることができますか?

+0

このようなコメントは好きではありません。なぜ私は何も試していないと思う。 –

+1

@KenOKABE。あなたが試したことを私たちに示していない限り、あなたは何かを試したことを知っているでしょうか?あなたは今ではほぼ2年間 "SO"にいます。あなたはルールを知っている必要があります。 –

+1

@KenOKABE:あなたがそれらのコメントが嫌いな場合は([ヘルプセンターでそれらを避ける方法をチェック](http://stackoverflow.com/help/asking):良い質問はあなたがすでに試したことを示しています。あなたが見た場所。これにより、他のユーザーがあなたがすでに試したものと回答を投稿することを避けることができます。 –

答えて

7

を:あなたは、たとえば、ヘルパー関数を使用する必要があります後で(元の文字列を修正するために正規表現マッチを使用した場合は復元します)。

(^|[^\n])\n(?!\n) 

は、単一の改行プラス前の文字、および

(^|[^\n])\n{2}(?!\n) 

マッチダブル改行プラス直前の文字と一致します。

だから、あなたが<br />で単一\nを交換したい場合、たとえば、あなたが\n\nについて

result = subject.replace(/(^|[^\n])\n(?!\n)/g, "$1<br />"); 

を行う必要があり、それは

result = subject.replace(/(^|[^\n])\n{2}(?!\n)/g, "$1<br />"); 

regex101

でそれを参照してくださいです説明:

(  # Match and capture in group number 1: 
^  # Either the start of the string 
|  # or 
[^\n] # any character except newline. 
)  # End of group 1. This submatch will be saved in $1. 
\n{2} # Now match two newlines. 
(?!\n) # Assert that the next character is not a newline. 
+1

はい、素晴らしいものですが、配列をマッチさせるのではなく、配列をマッチさせたいのですが?ヘルパー機能なしでこれを行うことはできますか? – georg

+0

ありがとうございます。私はこの問題に関するthg435調査を尊重し、今後の議論を楽しみにしています。それを言って、私はこの技術を交換する必要があります。どうもありがとうございました。どうやってシングル\ n?私は非常に基本的な何かを恋しいですか? –

+0

@ thg435:なぜ配列内の一連の同一の文字列を一致させたいのですか?あなたはすでにマッチが2つの改行(余分な文字を割り引く)で構成されていることを知っています:) –

1

同じ文字のN回の繰り返しを正確に一致させるには、先読みと見栄えが必要です(Match exactly N repetitions of the same character参照)。 javascriptは後者をサポートしていないので、純粋なregexpの解決策は不可能であるようです。 JavaScriptが後読みアサーションをサポートしていないので、あなたがあなた\ n`s前に、一つの追加の文字にマッチし、それに対処するために覚えておく必要が

> x = "...a...aa...aaa...aaaa...a...aa" 
"...a...aa...aaa...aaaa...a...aa" 
> x.replace(/a+/g, function($0) { 
     return $0.length == 2 ? '@@' : $0; 
    }) 
"[email protected]@[email protected]@" 
+2

まあ、改行以外にもマッチして、その余分なキャラクターを後で扱うなら、見た目はなくてもかまいません。 –

+0

あなたのご意見ありがとうございます。非常に有益。 thg435 –

関連する問題