Я бы выделил его в другую группу захвата следующим образом:
(?i)(?P<g1>5?4?G)\sDL\s(?P<g2>[^\s]*)\sUP\s(?P<g3>[^\s]*)
(?i)
делает все регулярное выражение нечувствительным к регистру
(?P<g1>5?4?G)
является первым сопоставление групп на 4g, 5g, 4G или 5G.
(?P<g2>[^\s]*)
- вторая и третья группы, совпадающие по всему, что не является пробелом.
Затем в Python вы можете сделать:
match = re.match('(?i)(?P<g1>5?4?G)\sDL\s(?P<g2>[^\s]*)\sUP\s(?P<g3>[^\s]*)', input)
И получить доступ к каждой группе следующим образом:
match.group('g1')
и т. Д.
Попытайтесь создать RouteValueDictionary, содержащий Ваши значения. Необходимо будет дать каждой записи различный ключ.
<% var rv = new RouteValueDictionary();
var strings = GetStringArray();
for (int i = 0; i < strings.Length; ++i)
{
rv["str[" + i + "]"] = strings[i];
}
%>
<%= Html.ActionLink( "Link", "Action", "Controller", rv, null ) %>
даст Вам ссылку как
<a href='/Controller/Action?str=val0&str=val1&...'>Link</a>
Править: MVC2 изменил интерфейс ValueProvider для создания моего исходного ответа устаревшим. Необходимо использовать модель с массивом строк как свойство.
public class Model
{
public string Str[] { get; set; }
}
Затем образцовый редактор связей заполнит Вашу модель со значениями, которые Вы передаете в URL.
public ActionResult Action( Model model )
{
var str0 = model.Str[0];
}
Я использовал бы POST для массива. Кроме того, чтобы быть ужасным и злоупотребление ДОБИРАЮТСЯ, Вы рискуете заканчиваться пространство URL (хотите верьте, хотите нет).
Принятие 2 000-байтового предела. Строка запроса наверху (&str =) уменьшает Вас до ~300 байтов фактических данных (предполагающий, что остальная часть URL составляет 0 байтов).