Регулярное выражение вопроса - PullRequest
0 голосов
/ 13 мая 2011

В .NET 4.0 Чему соответствует reg ex,

"^ABC(: ([^=]+(?<! )=(?! )[^,]+(?<! )(,(?! )|$))+)?$"

?

Некоторые примеры примеров будут очень полезны.

Я весьма удивлен следующими результатами.Приведенное выше выражение соответствует: «ABC: X = 12, Y = 1.79769313486232E + 308».Но это не работает для "ABC: X = 12, Y = 1,79769313486232E + 308".Единственная разница - десятичный символ для двойного числа.

Спасибо.

Ответы [ 2 ]

1 голос
/ 13 мая 2011

Посмотрите на [^,], который в основном говорит, что после = (=(?! )) совпадают все, что не имеет , в нем.

Regex не очень элегантно:

Даже что-то вроде ABC будет соответствовать. Нечто подобное ABC: X=1Y=1 также будет соответствовать. Я бы сказал, не используйте это и соберите правильное регулярное выражение для того, что вам нужно.

0 голосов
/ 13 мая 2011

Вы сказали:

Вышеприведенное выражение соответствует, ABC: X = 12, Y = 1.79769313486232E + 308 ". Но это не работает для" ABC: X = 12, Y = 1,79769313486232E+308 "

Без какого-либо контекста я не уверен, какова цель сопоставления вышеуказанных строк, но я могу понять, почему было бы совершенно законно сопоставлять первое, а не второе.

Формат 1.79769313486232E+308 является научным обозначением для очень большого числа (+308 в основном означает перемещение десятичной точки на 308 позиций вправо). Это допустимое число с точкой, но не сзапятая.

Это правда, что некоторые локали могут использовать запятую в качестве десятичного знака, а не точки, но научные обозначения стандартизированы для использования точки, как и языки программирования и другие компьютерные приложения, которые будут использовать числа вэтот формат, поэтому вполне допустимо использовать его как точку и не использовать запятую.

Чтобы продемонстрировать, почему это важно, если запятую разрешить в этом примереmple, это создало бы двусмысленность относительно того, где закончилось значение Y, потому что запятая уже используется, чтобы показать конец значения X, использование запятой вместо точки в Y может сделатькомпьютер считает, что значение Y равно 1, что было бы неверно.

...