nginx извлекает значение из поста и получает

Повторное выражение для извлечения числа десятичных чисел / чисел с плавающей точкой может быть различным в зависимости от того, используются ли какие-либо разделители тысяч, какой символ обозначает десятичный разделитель, нужно ли также соответствовать экспоненте, соответствовать ли положительному или отрицательному знаку, независимо от того, соответствуют ли номера, которые могут иметь ведущие 0, исключить или не извлекать число, которое заканчивается десятичным разделителем.

Общее регулярное выражение для соответствия наиболее распространенным типам десятичных чисел приведено в Согласование чисел с плавающей запятой с регулярным выражением :

[-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?

Я только изменил группу захвата на не захватывающий (добавлено ?: после (). Он соответствует

Если вам нужно сделать его еще более общим, если десятичный разделитель может быть точкой или запятой, замените \. с символьным классом (или выражением скобки) [.,]:

[-+]?[0-9]*[.,]?[0-9]+(?:[eE][-+]?[0-9]+)?
           ^^^^

Обратите внимание, что выражения выше соответствуют как целым, так и поплавкам . Чтобы сопоставить только числа с плавающей запятой / десятичные числа, убедитесь, что часть дробного шаблона является обязательной, удалив вторую ? после \. ( demo ):

[-+]?[0-9]*\.[0-9]+(?:[eE][-+]?[0-9]+)?
            ^

Теперь 34 не сопоставляется: сопоставляется.

Если вы не хотите сопоставлять числа с плавающей запятой без начальных нулей (например, .5), то сделать первый знак соответствия шаблону обязательным (по добавление квантора +, чтобы соответствовать 1 или более вхождений цифр):

[-+]?[0-9]+\.[0-9]+(?:[eE][-+]?[0-9]+)?
          ^

См. эту демонстрацию . Теперь оно соответствует значительно меньшему количеству образцов:

Теперь, если вы не хотите сопоставлять . внутри ...? Как сопоставить их как целые слова? Используйте lookarounds :

[-+]?(?

И демо-версия здесь :

Теперь, как насчет тех плавающих с тысячами разделителей, как 12 123 456.23 или 34,345,767.678? Вы можете добавить (?:[,\s][0-9]+)* после первого [0-9]+, чтобы соответствовать нулевым или более последовательностям запятой или пробелам, за которыми следуют 1 + цифры:

[-+]?(?

См. Демонстрацию regex :

Поменяйте запятую на \., если вам нужно использовать запятую как разделитель десятичной дроби и период как разделитель тысяч.

Теперь, как использовать эти шаблоны в C #?

var results = Regex.Matches(input, @"")
        .Cast()
        .Select(m => m.Value)
        .ToList();

0
задан digrouz 22 January 2019 в 10:31
поделиться

1 ответ

Согласно официальной документации nginx попробуйте использовать:

  if (($request_body ~* (.*)clientID#1(.*)) )

 {

    proxy_pass server1;

  }

if (($request_body ~* (.*)clientID#2(.*)) )  {

    proxy_pass server2;

  }

}
0
ответ дан workaround 22 January 2019 в 10:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: