1

Rogue Assassin 2007私は言うことから年を取り、戻る方法を理解することができないようです:

moviename = "Rogue Assassin" 'Whitespace doesn't matter
movieyear = "2007" 'Whitespace doesn't matter

しかし、私はそれを動作させることができません。私は次のことを試みてきました:

    If System.Text.RegularExpressions.Regex.IsMatch(fn, "[0-9][0-9][0-9][0-9]") Then 'Is this right?
        Dim mtemp As String() = fn.Split(" ") 'Movie temp array
        myear(0) = mtemp.Last 'Attempting to set year to the last split
        For Each z As String In mtemp 'Adding the other elements in mtemp together to remake the title
            If z IsNot mtemp.Last Then
                mtitle(0) = z & " " 'Movie title
            Else
                Exit For
            End If
        Next
        ...
    Else
        ...
    End If

どんな助けでも大歓迎です!

4

2 に答える 2

2

あなたが試すことができます

Dim r As Regex = new Regex("(.*)\s+([0-9]+)$");
Dim match As Match = System.Text.RegularExpressions.Regex.Match("Rogue Assassin 2007")

上記のコードは、一致を2つのグループにキャプチャし、match.Groups(1).Captures(0).Valueおよびmatch.Groups(1).Captures(1).Valueを使用してキャプチャを取得できます。

http://msdn.microsoft.com/en-us/library/twcw2f1c.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2

于 2012-12-28T05:47:08.433 に答える
2
1) Regular expression for matching year strings containing year 1800 to 2013 (ideal regex for obtaining movie year from the title)

1[89][0-9]{2}|200[0-9]|201[0-3]

2) Regular expression for matching year strings containing year from 1800 onwards.

1[89][0-9]{2}|20[0-9]{2}

Have tested the pattern (1) for the below movie titles:

Die Hard 2 1990 -> 1990
Django Unchained (2012) -> 2012
This Is 40 (2012) -> 2012
The Twilight Saga: Breaking Dawn - Part 2 - 2012 -> 2012
Die Hard 4.0 2007 -> 2007

仮定:

質問では年の形式が指定されていないため、年は常に4桁であると想定されます。

映画のタイトルには他の4桁も含めることができるため、年は1800年から2013年まで特に一致します[これにより、ほとんどの映画のタイトルから年の値を取得できます。これにより、一致するジャンクデータが減少します。これは今のところあなたのニーズに応えるためだと考えてください:)]。

于 2012-12-28T06:39:47.597 に答える