2013-08-21 3 views
1

Итак, у меня есть spinEdit, который должен отображать год и месяц в этом формате yyyyMM. Я использую RegEx маскировать значение этого формата, но когда я хочу, чтобы увеличить от сказать 201212 до 201301, он терпит неудачу и отображает 20121. регулярное выражение, я использую выглядит следующим образомКак увеличить число с помощью регулярного выражения

([0-9][0-9][0-9][0-9])(0[1-9])|(1[0-2]) 

Вопрос заключается в том, что приращения значение (добавление 1 к месяцу) не увеличивает поле года, когда месяц равен 12. То же самое происходит в обратном направлении, где уменьшение значения (минус 1 месяц) не уменьшает год, 201301 - 1 принимает его до 2013 года. Есть ли способ исправить это, используя только RegEx?

+1

Я не знаком с devexpress, так или иначе вы уверены в своем регулярном выражении? Я бы лучше использовал что-то вроде '/ (19 | 20) ([0-9] [0-9]) (0 [1-9] | 1 [0-2]) /'. И что вы подразумеваете, установив это «используя только RegEx»? – davide

+0

Спасибо за этот совет, однако это начало на самом деле мало меняет и проблема остается –

+1

Да, я знаю. Я бы лучше использовал некоторые проверки if, чтобы узнать, соответствует ли то, что вы захватили с месячной группой, 12 (для добавления) или 01 (для вычитания) и аналогично за год. – davide

ответ

0

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

0

Я думаю, что это возможно, но не полностью решение для регулярных выражений, вам нужно иметь доступ к Linux и bash (лично я нахожу функцию даты в bash ve) Мне пришлось получить форматы даты (строки) в имени файла и сравнить это к дате в скрипте. Ниже приведен фрагмент кода:

#!/bin/bash 

#yyyymm you got after regex 
inputdate = 201307 
#value you want to subtract 
x = 8 
#outputdate should return you 201211  
outputdate = $(date -d "$inputdate01 -$x month" +"%Y%m") 
Смежные вопросы