(おそらく複雑な) RegExp の質問があります。モデルからファイルを生成するツールで、モデルが名前を 2 回使用していると表示されますが、これがどの名前であるかは表示されません。問題の名前はすべて「CK_」で始まり、その後に空白以外が続くことを知っています。このテストファイルを準備しました:
CK_123abc
foo
CK_abc
CK_123abc
CK_199
bar
CK_177
bar
CK_188
ご覧のとおり、「CK_123abc」が 2 回表示されています。RegExp を使用して、それらすべて (さらにある場合) をキャッチしたいと考えています。これまでに取得したもの: (CK_\S*).+\1
これは正常に機能し、次のテキストと一致します。
CK_123abc
foo
CK_abc
CK_123abc
しかし、それも一致します
CK_199
bar
CK_177
bar
CK_1
2 番目の不要な一致はCK_1です。私の実際のドキュメントはこれらの「半文字列」一致でいっぱいであるため、データ内で実際の一致 (ここの最初のものなど) を見つけることができません。(CK_\S*)は何らかの理由で貪欲ではない、または正規表現全体が貪欲であると思います。私のユースケースが機能するには、(CK_\S*)が最初に可能な限り一致する必要があり、その後、ドキュメントの後半で同じ一致が見つかるはずです。
私はメモ帳++を使用しています(PCREを使用)。「。」"\r"および"\n"に一致します。
どんな指針も高く評価されます。