Это довольно сложное регулярное выражение, которое возвращает массив пар ключ/значение из запатентованной строки данных. Вот пример данных, если курьер не может быть использован в .Net, и нужно использовать другой метод.Как преобразовать этот шаблон соответствия PHP RegEx в .Net
0,"101"1,"12345"11,"ABC Company"12,"John Doe"13,"123 Main St"14,""15,"Malvern"16,"PA"17,"19355"19,"UPS"21,"10"22,"GND"23,""24,"082310"25,""26,"0.00"29,"1Z1235550300000645"30," PA 193 9-05"34,"6.55"37,"6.55"38,"8.05"65,"1Z1235550300000645"77,"10"96,""97,""98
Если вы посмотрите внимательно вы видите его key
, «value
», key
, «value
» Единственная гарантия на форматирование является то, что каждая пара ключей значения разделяются запятой, и каждое значение будет всегда заключенная в двойные кавычки. Основная проблема (причина, по которой вы не можете ее разбить) - это плохой выбор предыдущего кодера для разделения ключей и значений с тем же символом, что и записи. В любом случае, из моих рук. Вот рабочий пример PHP.
function parseResponse($response) {
// split response into $key, $value pieces
preg_match_all("/(.*?),\"(.*?)\"/", $response, $m);
// loop through pieces and format
foreach($m[1] as $index => $key) {
$value = $m[2][$index]
echo $key . ":" . $value;
// this will output KEY:VALUE for each entry in the string
}
}
Вы можете видеть выражение /(.*?),\"(.*?)\"/
Вот что я имею в VB .Net
Imports System.Text.RegularExpressions
Public Class Parser
Private Sub parseResponse(ByVal response As String)
Dim regExMatch As Match = Regex.Match(response, "/(.*?),\""(.*?)\""/")
End Sub
End Class
Это не работает должным образом, то, кажется, возвращает только первый пункт, я попробовал для/каждого не повез. Мне нужно обрабатывать эти пары ключ/значение по одному, как в примере php. –
@MikeL: Вам нужен метод '.Matches()', а не '.Match()'. –
Спасибо! мы выяснили это в то же время ... Для каждого т в матче в матчах –