2013-08-30 4 views
0

Я пробовал многое, чтобы узнать значение, используя свое регулярное выражение, но каким-то образом он не работает, некоторые из вас могут помочь.Проблемы с регулярным выражением десятичных знаков

 

    $102 
    $102.36 
    $204.36 

Я использую ниже регулярного выражения

 

    [$]\\d+[.]\\d{0,2} 

, но это только выборка значения, где десятичное присутствует (для моего случая 102,36 & 204.36), но в моем случае десятичного не является обязательным, пожалуйста, помогите меня.

+1

Yo использование '' квантор, чтобы часть вашего шаблона регулярного выражения необязательными. –

+0

поэтому вместо исправления [.] Следует писать?. можете ли вы перефразировать мое регулярное выражение? – Paras

+0

Вы должны добавить квант '?' К части, которая предназначена для десятичной части. В вашем случае от '[.]' До конца. –

ответ

1

Используйте ? вместе со скобками для дополнительной части:

[$]\\d+([.]\\d{0,2})? 
+0

'' 'не оператор. –

+0

Как записать числа после '.', Когда они присутствуют? – Juto

+0

Поскольку дополнительная часть окружена круглыми скобками, ее совпадение будет доступно в виде группы. Если вы хотите исключить точку, вы можете записать ее как '(?: [.] (\\ d {0,2})?' - таким образом, только цифры будут в группе. – Thomas

0

\$([0-9]+(\.[0-9]+)?))

знака доллара, за которым следует номер один или несколько раз, необязательно с последующим (точкой с последующим числом 1 или более раз)

\$([0-9]+(\.[0-9]{2})?)

То же самое, но будет соответствовать только 2DP, первый (не 0th) ма класс tch будет содержать номер.

0th матч: все это (включая $)

первый матч: все числа

второй матч: десятичная точка и цифры, которые следуют (если таковой имеется)

не захватить 2-й матч с вкусами Perl или Regex:

\$([0-9]+(?:\.[0-9]{2})?)

Смежные вопросы