正規表現: 文字の最初の出現まで一致させる 質問する

正規表現: 文字の最初の出現まで一致させる 質問する

特定の文字 (たとえば「;」(セミコロン)) が最初に出現するまですべてに一致するパターンを探しています。

私はこう書きました:

/^(.*);/

しかし、実際には、セミコロンが最後に出現するまで、すべて(セミコロンを含む)に一致します。

ベストアンサー1

必要なのは

/^[^;]*/

文字クラス[^;]であり、セミコロン以外のすべてに一致します。

^ (行頭アンカー) が正規表現の先頭に追加されるため、各行の最初の一致のみがキャプチャされます。後続の一致が望ましいかどうかに応じて、これが必要な場合もあります。

引用するperlreマニュアルページ:

[] で文字のリストを囲むことで文字クラスを指定できます。文字クラスはリスト内の任意の文字と一致します。"[" の後の最初の文字が "^" の場合、クラスはリストにない任意の文字と一致します。

これはほとんどの正規表現方言で機能するはずです。

注:パターンは、最初のセミコロンまでのすべてに一致しますが、セミコロンは除きます。また、セミコロンがない場合は行全体に一致します。一致にセミコロンを含めたい場合は、パターンの最後にセミコロンを追加します。

おすすめ記事