2017-01-17 6 views
-2

私は名前を抽出してウェブなどを解析するためにビデオファイル名をグループ化するREGEXを考え出しています。Regexで映画の名前を探す

ムービーの名前は、最初は名前の中に最初に表示されていて、次にいくつかのランダムな文字や数字などがあります(これは必ずしも問題ではないかもしれません)。例えば

Batman.v.Superman.Dawn.of.Justice.2016.BLABLABLA-XDAWEFFF 

のでその

(Batman.v.Superman.Dawn.of.Justice)(rest of the file) 

のようにグループ化され、その後、私はちょうどスペースでドットを、最初のグループを抽出置き換えることができると私は行ってもいいよ。

もう一つの例:

Eye.in.the.Sky.2015.1080p.BluRay 

へ:

(Eye.in.the.Sky)(rest) 

あなたたちは心の中で任意の正規表現を持っていますか?私は、名前の後ろに何らかの言葉や数字などがあるかもしれないので、それらを分ける方法を知りません。

+2

映画のタイトルには標準がありません。たとえば、映画「2012」で期待される行動は何ですか?文字列は '2012.2009.BLABLABLA-XDAWEFFF'ですか?あまりにも難しくないだろうが、正確さが落ちる最初の4番の数字の出現に止めたいのであれば。 – chris85

+0

'(Eye.in.the.Sky)'を '.'で分割することもできます。すべての部品を配列で取得する必要があります。 – RMachnik

+0

@ chris85よく見えます。たぶん20xx形式の2番目のドットの最初に見つかる正規表現はほとんどの場合動作します。 – JFPicard

答えて

2

あなたの最良の推測です種類のものである

([ .\w']+?)(\W\d{4}\W?.*) 

しかし、コメントに記載されているように、映画タイトルは標準はなく、命名規則もそうではありませんが、これは必ずしも機能しません。スペースドット、AZ、AZ、0-9、_と '

などの任意の文字が

([ .\w']+?)

  • [ .\w']

    だからここに、それは何だステップバイステップ

  • +?キャプチャは、式の2番目の部分である必要があります。

(\W\d{4}\W.*)

  • \W AZではないもの、AZ、0-9、AZではありません_
  • \d{4} 4つの数字0-9
  • \W何でも、AZ 、0-9、_
  • .*文字列の末尾までの文字

Here's an example

+0

最初のグループにスペースを追加する方法を教えてください。だからそれは例に合っています:Black Mass 2015 1080p?私は最初のグループに\ sを追加しようとしましたが、うまくいきませんでした... – doublemc

+0

このようにして、 '([\。\ w '] +?)'、しかし区切り文字を。スペースには、動作しません。式は '.'をデリミタとして期待して構築されました。これはaの代わりにスペース... '([\ s \ w'] +?)(\ s [0-9] {4} \ s。*) 'のバージョンです。 – TaoStyle

+0

ちょうどそれをregex101で試してみました。それはその空白のスペースで全くその名前をグループ化しません。あなたはそれを自分で確認できますか? – doublemc

0

文字列にRegexで定義されている指定された書式がない場合、それを行うことは不可能です。

映画の問題は、名前に何かを含めることができることです。

Batman.v.Superman.Dawn.of.Justice|2016.BLABLABLA-XDAWEFFF 

次に、あなたには、例えば使用することができます:あなたが名前の末尾に保存されたときに場所を決定するために、いくつかの区切り文字を使用することができますあなたの問題を解決するために

String[] s = "Batman.v.Superman.Dawn.of.Justice|2016.BLABLABLA-XDAWEFFF".split("|"); 
関連する問題