0

この可能な入力から、太字のテキストを一致させたい:

ジャンル:スリラー, アドベンチャー, アクション, 2012

ジャンル:スリラー, アドベンチャー, アクション

私はこのようなことをしました(?<=Genre: ).*(?=(, \d{4})?)

私の問題は、一致があるためこの時点で停止すること(, \d{4})?を期待してこの部分を配置することですが、そうではなく、一致を無視するだけです...", 2012"

何かアドバイス?

4

1 に答える 1

2

.*貪欲なので、可能な限り何でも消費します。数字を含む最後の部分はオプションであるため、すべてが によって消費されます.*

より雄弁な方法があるかもしれませんが、おそらく 2 つの正規表現があります。

(?<=Genre: ).*(?=(, \d{4}))|(?<=Genre: ).*

私が正しければ、最初のケースは数字の場合に一致しますが、それが失敗すると、より一般的なケースに移行します。

編集:実際には、次のようなことをするとうまくいくかもしれません:

(?<=Genre: ).*?(?=(, \d{4})|$)

そうすれば.*貪欲ではありませんが、数字または文字列の末尾まですべてを消費する必要があります。

于 2013-01-21T01:12:46.833 に答える