2011-05-27 17 views
3
/\n\s*\n/s 

私はそれがこの正しいこのこの正規表現は何を意味しますか?

  • 新しい行後、0以上のスペース
  • 続い
  • 新しいライン

を意味だと思いますか?そうでない場合は、説明することができますか?

+0

どの正規表現パーサーを使用していますか?どの言語のために、そして/またはどのライブラリに?あなたはそれについていくつかのタグを追加したいかもしれません。 – Roalt

+0

@Roalt、私はすでにPHPにタグをつけていましたが、誰かがそれを削除したと思います。それを元に戻します。 – sameold

答えて

8

右端:\sは実際にはタブとCR/LF(\r\n)を含む「任意の空白文字」を意味します。あなたはPerlを使用している場合

\sは(perlreから)あまりにもいくつかの他の文字に一致してもよい。

をUnicodeが有効である場合、 "\ S" マッチも "\ X {85}"、「\ X {2028}、及び "\ Xの{2029}"

カップルより明確。

  • 一致が固定されていないので(^冒頭O r $)、ほとんどのエンジンはこの式を文字列内の任意の場所に一致させることができるという意味で扱います。つまり、正規表現/cat/は "cat"、 "caterpillar"、または "concatenate"と一致します。だからあなたの文字列はあなたが記述したものを含んでいる必要がありますが、他のものの接頭辞や接尾辞を付けることができます。
  • 最後に末尾の/sは、文字列全体を1つの巨大な線として扱うことを意味します。繰り返しますが、perlreから:

文字列を1行として扱います。つまり、 "。"を変更します。どんな文字でも一致させることができます。改行は通常は一致しません。

"/ s"と "/ m"修飾子はどちらも$ *設定を上書きします。つまり、$ *が含まれていても、 "/ m"を除いた "/ s"は、文字列の始めにのみ "^"を一致させ、最後に一致させるには "$"を強制します。最後の文字列)。一緒に、/ msとして、彼らは "。"文字列内の改行の直前と直前に、それぞれ "^"と "$"を一致させることができます。

+0

PHPを使用している場合、バグについて非常に注意してください:http://core.trac.wordpress.org/ticket/11528 –

1

間違っています。 \sはスペースだけでなく空白文字です。

1

あなたの前提は、1つの変更と1つの省略でほとんど正しいです。

最初に、他の人が言ったように、\sは、「スペース」だけでなく空白を意味します。また

は、後続sは、正規表現は.(ドット)は改行にマッチすることを意味し、「シングルラインモード」であることを意味します。つまり、この正規表現に渡すものは、改行があるかどうかにかかわらず、1行の入力であるかのように解析されます(\nまたは\rのような別の特殊文字として表示されます)。

関連する問題