Задача в регулярном выражении для десятичного числа - PullRequest
1 голос
/ 10 февраля 2011

Я хочу регулярное выражение для десятичных чисел, таких как 00.0

Я попробовал это [0-9]{1,2}(.[0-9]{1})?, который отлично работает.

Но я должен добавить ^ в начале и * $ в конце.

Можно ли заставить регулярное выражение работать так же, как и при добавлении этих символов?

^ ([0-9] {1,2} (. [0-9] {1})?) * $ -> не удается выполнить то, что я хочу.

Мое регулярное выражение должно выглядеть как ^ [Все, что здесь]* $

Буду признателен за любую помощь.

Спасибо

Ответы [ 4 ]

1 голос
/ 10 февраля 2011

Я понял, что проблема была *, и ее можно исключить, добавив пару круглых скобок перед *, как ()*

И ^([0-9]{1,2}(\.[0-9])?)()*$ хорошо работает.

1 голос
/ 10 февраля 2011

Я думаю, что вам нужно. * В конце

, но не могли бы вы привести несколько примеров строк, которые вы хотите сопоставить, и строк, которые вы не хотите сопоставлять>

1 голос
/ 10 февраля 2011

Если я хорошо понимаю, что вам нужно, попробуйте:

\^\d\d?(\.\d)?\*\$

Это будет соответствовать

\^       a carret ^
\d\d?    1 or 2 digit
(\.\d)?  eventually a dot and a digit
\*       an asterisk
\$       a dollar
1 голос
/ 10 февраля 2011

Зависит от типа регулярного выражения, но для многих типов регулярных выражений (posix, posix extended, perl, python, emacs) . (точка) означает соответствие любому символу.Чтобы соответствовать символу точки, вы должны заключить его в кавычки, например \..

. И чтобы соответствовать ровно одной цифре, вам не нужно добавлять {1} в конце.Т.е. [0-9]{1} совпадает с [0-9].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...