2016-06-02 4 views
0

Iが基準マネージャMendeleyによって生成された マッチ、可能秒コンマとスペースと[A-Z]正規表現

Author_1999.pdf 
Authorone, Authortwo_1999.pdf 
Authorone, Authortwo, Authorthree.pdf 
Arian, Nachmias, Amir_2002.pdf 
Author, Review, Source_2015(2).pdf 
Avraham, Hacohen_1930.pdf 

名前のファイルを持っています。 Authorone1999.pdfまたはAuthorone1999(2).pdfの形式ですべてが必要です。私は、私もオプションの最初のカンマ空間Authortwoに一致させるにはどうすればよいだけで、最後のコンマスペースの作者に一致する正規表現と_

/(,)+[A-z ]*,?[A-z]*,?-?[A-z]*_/ 

enter image description here

を持っています。

Authorone, et al._1999.pdf 

と私は既にそれらを整理しているので、2つ以上のカンマがありません。

/, +[A-Za-z-]+(?:, [A-Za-z-]+)?(?:, [A-Za-z-]+)?_/ 
+3

'Authorone、Authortwo、Authorthree.pdf'には年がありません。これをどう扱う? – anubhava

+0

削除する[A-Z]の最後に「_」がないので、一致させたくありません。このような少数だけあり、私は手でそれらをしなければならないでしょう。終了年 'files = Dir ['*']のファイルのみを照合します。select {| x | x =〜/d*.pdf/} ' –

+1

regexrを使わないでください。[rubular](http://rubular.com)を使ってRuby正規表現をテストしてください。 –

答えて

1

ここでは簡単なソリューションです:についてどのように

+0

著者名の ' - 'はどうですか?複数の著者がコンマで区切られていますか? – Toto

+0

ああ、私はハイフンを見逃してしまいました。申し訳ありません - サンプルテキストには何もありませんでした(しかし、画像にはあります)。それは修正するのが簡単です。 –

+0

複数の著者については、OPが実際に望んでいることは正直わかりません。 'Arian、Nachmias、Amir_2002.pdf'を' ArianNachmiasAmir2002.pdf'に変換する必要がありますか?あるいは、「Arian2002.pdf」、「Nachmias2002.pdf」、「Amir2002.pdf」という3つのファイルがありますか?あるいは私がここで行ったように、最初の著者の名前をとっているだけですか?与えられた例は不明である。 –

1

/^(?<author>[a-z-]+).*_(?<year>[\d()]+)/i 

Demo

これは、2つの名前付きキャプチャグループにauthoryearを格納します。