コンマで区切られた値のリストと一致する正規表現、末尾のコンマは許可されません。

コンマで区切られた値のリストと一致する正規表現、末尾のコンマは許可されません。

一致させたい項目:

  1. あああ
  2. ああああ
  3. ああ、bbb、ccc

しかし、いいえ末尾のカンマのリストです。私のもの現在の正規表現:

(\w{3},?)+

また、aaa,bbb,末尾のカンマ()があるリストと一致します。私もできると思いました。する:

(\w{3})(,\w{3})*

しかし、かなり醜いです。私の実際の正規表現は3文字の単語と一致せず、より大きな単語と一致し、正規表現を繰り返すのは面倒です。この問題をどのように解決しますか?

ベストアンサー1

名前を付けてください。大きいPCREの正規表現は次のとおりです。

(?<big>[a-zA-Z0-9]+)

それ以降のすべての内容は?<name>その名前で記録されます。
と言う正規表現サブルーチン

したがって、繰り返し(?&name)が簡単になります。

^(?<big>[a-zA-Z0-9]+)(,(?&big))*$

オンラインテスト

したがって、IPマッチングなどがより簡単になります。

^(?<ip>25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(.(?&ip)){3}$

オンラインでテストしてみてください

次のようにgrepで使用します。

grep -P '^(?<ip>25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(.(?&ip)){3}$'

おすすめ記事