1. ホーム
  2. regex

[解決済み] 正規表現がマッチングしすぎています。どうすれば停止しますか?重複

2022-10-23 22:52:19

質問

この巨大で醜い文字列があります。

J0000000: Transaction A0001401 started on 8/22/2008 9:49:29 AM
J0000010: Project name: E:\foo.pf
J0000011: Job name: MBiek Direct Mail Test
J0000020: Document 1 - Completed successfully

正規表現を使って断片を取り出そうとしています。この場合、私は Project Name と書いてある部分まで J0000011: (という部分までです(11の部分は毎回違う数字になります)。

これが、私が遊んでいた正規表現です。

Project name:\s+(.*)\s+J[0-9]{7}:

に当たるまで止まらないのが問題です。 J0000020: に当たるまで止まらないことです。

の最初の出現箇所で正規表現を停止させるにはどうしたらよいでしょうか。 J[0-9]{7} ?

どのように解決するのですか?

作る .* を追加することで、欲張らないようにします。 ? を追加することで、欲張らないようにすることができます。

Project name:\s+(.*?)\s+J[0-9]{7}: