我有以下的正則表達式解析出一個電子名片(VB)試圖解析出電子名片名稱輸入與正則表達式
Dim options As New RegexOptions()
options = RegexOptions.IgnoreCase Or RegexOptions.Multiline Or RegexOptions.IgnorePatternWhitespace
regex = New Regex("(?<strElement>(N)) (;[^:]*)? (;CHARSET=UTF-8)? (:(?<strSurname>([^;\n\r]*))) (;(?<strGivenName>([^;\n\r]*)))? (;(?<strMidName>([^;\n\r]*)))? (;(?<strPrefix>([^;\n\r]*)))? (;(?<strSuffix>[^;\n\r]*))?", options)
m = regex.Match(s)
If m.Success Then
Surname = m.Groups("strSurname").Value
GivenName = m.Groups("strGivenName").Value
MiddleName = m.Groups("strMidName").Value
Prefix = m.Groups("strPrefix").Value
Suffix = m.Groups("strSuffix").Value
End If
,當我有它的工作方式電子名片,如:
BEGIN:VCARD
VERSION:2.1
N:Bacon;Kevin;Francis;Mr.;Jr.
FN: Mr. Kevin Francis Bacon Jr.
ORG:Movies.com
但它時,vCard是這樣的工作不正常:
BEGIN:VCARD
VERSION:2.1
N:Bacon;Kevin
FN:Kevin Bacon
ORG:Movies.com
正則表達式分配<strSuffix>凱文,而不是<strGivenName>像我想要的。我怎樣才能解決這個問題?
改編正則表達式從這裏走過:vCard regex
你使用哪個'選項? –
另外,我不知道這怎麼可以在第一個示例輸入上工作。爲什麼它不匹配'N:VCARD'?或'N:2.1'?或'N:Kevin Francis Bacon Jr.'先生? (呃,實際上只有前兩個是奇數,因爲你只返回第一個匹配) –
另一個:你爲什麼要把'Bacon'分配給''?你的意思是凱文嗎?你的意思是''? –