22

検索が文字列の途中で停止せず、文字列の最後まで続くことを確認するために、ドル記号が文字列の最後の文字と一致するために使用されることを私は知っています。

しかし、改行文字をどのように処理するのですか、改行文字の直前に一致するのですか、それとも考慮に入れますか。

文字列の配列に一致する正規表現が機能したため、Eclipse正規表現でチェックしましたが ([A-Za-z ]+)$\n、その逆ではありません([A-Za-z ]+\n)$

4

2 に答える 2

27

^$zero-widthトークンであることに注意してください。したがって、それらはどの文字にも一致しませんが、. に一致しpositionます。

  • ^文字列の最初の文字の前の位置に一致します。
  • $文字列の最初の位置より前の位置に一致しnewlineます。

そのため、もちろんString前にはが含まれません。それが、あなたの正規表現が失敗し、成功した理由です。$newline([A-Za-z ]+\n)$([A-Za-z ]+)$\n

簡単に言えば、 your の後には ,$が続き、newline他の文字はありません。

于 2012-12-17T10:46:06.523 に答える
12

パターンが改行で終わる場合、$通常はその文字の前に一致します。これは、少なくとも Perl、PCRE、Java、および .NET に当てはまります。(編集: Tim Pietzker がコメントで指摘しているように、\r.NET では改行とは見なされません)

これが導入されたのは、行から読み取られる入力が (少なくとも Perl では) 改行で終了し、この方法で都合よく無視できるためです。

\z文字列の最後を示すために使用します (正規表現エンジンでサポートされている場合)。

ソース

于 2012-12-17T10:40:17.970 に答える