New submission from z06steve: fails to replace last occurrence of string v_wofstgvw, reproduced in 3.2.3, 3.2.4 and 3.3.1
a=''' -------------------------------------------------------------------------------- -- V_INT_CTRC_ENTRY_DATE -------------------------------------------------------------------------------- REPLACE VIEW V_WOFSTGVW.V_INT_CTRC_ENTRY_DATE AS LOCKING ROW FOR ACCESS SELECT D.DY DY, D.DW_CRRT_FL CURRENT_FLAG, D.MTH CURRENT_MTH, (CAST(D.DY AS DATE) - EXTRACT(DAY FROM (CAST( D.DY AS DATE)))+1) CURRENT_MTH_BEG_DT, ADD_MONTHS ((CAST(D.DY AS DATE) - EXTRACT(DAY FROM (CAST( D.DY AS DATE)))+1) , 1) - 1 CURRENT_MTH_END_DT, D.WOFC_MTH_END_FLG CURRENT_MTH_END_FLG, D.WOFC_QTR_END_FLG CURRENT_QTR_END_FL, D.YR CURRENT_YEAR, ((D.YR||'01/01')(DATE)) CURRENT_YEAR_BEG_DT , ((D.YR||'12/31')(DATE)) CURRENT_YEAR_END_DT , D.WOFC_YR_END_FLG CURRENT_YEAR_END_FL, D.HDAY_FLG HOLIDAY_FLG, CAST(ADD_MONTHS (CASE WOFC_MTH_END_FLG WHEN 'Y' THEN WOFCO_FRST_DY_MTH ELSE WOFCO_BEGIN_MTH_DT END, -1)AS CHAR(7)) PREV_REP_MTH, ADD_MONTHS (CASE WOFC_MTH_END_FLG WHEN 'Y' THEN WOFCO_FRST_DY_MTH ELSE WOFCO_BEGIN_MTH_DT END, -1 ) PREV_REP_MTH_BEG_DT, ADD_MONTHS (CASE WOFC_MTH_END_FLG WHEN 'Y' THEN D.DY ELSE D.WOFCO_MTH_END_DT END, -1 ) PREV_REP_MTH_END_DT , D.PREV_MTH PRIOR_MTH, PSETM.PRIOR_SET_CURRENT_MTH, PSETM.PRIOR_SET_CURRENT_MTH_BGN_DT, PSETM.PRIOR_SET_CURRENT_MTH_END_DT, PREPSETM.PRIOR_SET_REP_MTH, PREPSETM.PRIOR_SET_REP_MTH_BGN_DT, PREPSETM.PRIOR_SET_REP_MTH_END_DT, CASE WOFC_MTH_END_FLG WHEN 'Y' THEN MTH ELSE PREV_MTH END REP_MTH, CASE WOFC_MTH_END_FLG WHEN 'Y' THEN WOFCO_FRST_DY_MTH ELSE WOFCO_BEGIN_MTH_DT END REP_MTH_BEG_DT, CASE WOFC_MTH_END_FLG WHEN 'Y' THEN D.DY ELSE D.WOFCO_MTH_END_DT END REP_MTH_END_DT, CASE WOFC_MTH_END_FLG WHEN 'Y' THEN ADD_MONTHS (D.WOFCO_FRST_DY_MTH, 12 ) ELSE ADD_MONTHS (D.WOFCO_BEGIN_MTH_DT, 12) END REP_MTH_NEXT_YEAR_BEG_DT, CASE WOFC_MTH_END_FLG WHEN 'Y' THEN ADD_MONTHS (D.DY, 12) ELSE D.WOFCO_MTH_NXT_YR_DT END REP_MTH_NEXT_YEAR_END_DT, CASE WOFC_MTH_END_FLG WHEN 'Y' THEN D.YR ELSE SUBSTR (PREV_MTH, 1, 4) END REP_YEAR, CASE WOFC_MTH_END_FLG WHEN 'Y' THEN (CAST((CAST(D.YR AS DATE FORMAT 'YYYY')||'/01/01') AS DATE FORMAT 'YYYY/MM/DD')) ELSE (CAST((SUBSTR (PREV_MTH, 1, 4) || '/01/01')AS DATE FORMAT 'YYYY/MM/DD' )) END REP_YEAR_BEG_DT, CASE WOFC_MTH_END_FLG WHEN 'Y' THEN (CAST((CAST(D.YR AS DATE FORMAT 'YYYY' )||'/12/31') AS DATE FORMAT 'YYYY/MM/DD')) ELSE (CAST((SUBSTR (PREV_MTH, 1, 4) || '/12/31') AS DATE FORMAT 'YYYY/MM/DD' )) END REP_YEAR_END_DT, D.SET_MTH SET_CURRENT_MTH, D.SET_BEGIN_MTH_DT SET_CURRENT_MTH_BGN_DT, D.SET_MTH_END_DT SET_CURRENT_MTH_END_DT, D.SET_YR SET_CURRENT_YEAR, D1.SET_CURRENT_BEG_DT SET_CURRENT_YEAR_BEG_DT, D2.SET_CURRENT_END_DT SET_CURRENT_YEAR_END_DT, D.SET_MTH_END_FLG SET_MTH_END_FLAG, D.SET_QTR_END_FLG SET_QTR_END_FLAG, CASE D.SET_MTH_END_FLG WHEN 'Y' THEN (CAST (D.SET_BEGIN_MTH_DT AS CHAR(7))) ELSE (CAST (SET_MTH_BEG_PREV_DT AS CHAR (7))) END SET_REP_MTH, CASE D.SET_MTH_END_FLG WHEN 'Y' THEN D.SET_BEGIN_MTH_DT ELSE SET_MTH_BEG_PREV_DT END SET_REP_MTH_BEG_DT, CASE D.SET_MTH_END_FLG WHEN 'Y' THEN D.SET_MTH_END_DT ELSE SET_MTH_END_PREV_DT END SET_REP_MTH_END_DT, SUBSTR (CASE D.SET_MTH_END_FLG WHEN 'Y' THEN (CAST (D.SET_BEGIN_MTH_DT AS CHAR(7))) ELSE (CAST (SET_MTH_BEG_PREV_DT AS CHAR(7))) END, 1, 4)SET_REP_YEAR , RD1.SET_RPT_YEAR_BEG_DT SET_RPT_YEAR_BEG_DT, SYB.SET_RPT_YEAR_END_DT, D.SET_YR_END_FLG SET_YEAR_END_FLAG FROM V_WOFSTGVW.D_DT D LEFT OUTER JOIN (SELECT D.SET_YR, MIN (D.SET_BEGIN_YR_DT) SET_CURRENT_BEG_DT FROM V_WOFSTGVW.D_DT D WHERE (CAST (D.SET_BEGIN_YR_DT AS CHAR(4))) = D.SET_YR GROUP BY D.SET_YR) D1 ON D1.SET_YR = D.SET_YR LEFT OUTER JOIN (SELECT D_SET_CURR_END.SET_YR, D_SET_CURR_END.DY SET_CURRENT_END_DT FROM V_WOFSTGVW.D_DT D_SET_CURR_END WHERE D_SET_CURR_END.SET_YR_END_FLG = 'Y') D2 ON D2.SET_YR = D.SET_YR LEFT OUTER JOIN (SELECT CASE WOFC_MTH_END_FLG WHEN 'Y' THEN D.YR ELSE SUBSTR (D.PREV_MTH, 1, 4) END SET_RPT_YR, MIN (D.SET_BEGIN_YR_DT) SET_RPT_YEAR_BEG_DT FROM V_WOFSTGVW.D_DT D WHERE D.PREV_MTH IS NOT NULL AND SET_BEGIN_YR_DT IS NOT NULL GROUP BY CASE WOFC_MTH_END_FLG WHEN 'Y' THEN D.YR ELSE SUBSTR (D.PREV_MTH, 1, 4) END) RD1 ON RD1.SET_RPT_YR = (CASE D.SET_MTH_END_FLG WHEN 'Y' THEN (CAST(D.SET_BEGIN_MTH_DT AS CHAR(4))) ELSE (CAST (D.SET_MTH_BEG_PREV_DT AS CHAR(4))) END ) LEFT OUTER JOIN (SELECT D.SET_MTH, MIN (D.SET_MTH_END_DT) SET_RPT_YEAR_END_DT FROM V_WOFSTGVW.D_DT D WHERE D.SET_MTH = CASE D.SET_MTH_END_FLG WHEN 'Y' THEN (CAST(D.SET_BEGIN_MTH_DT AS CHAR(4))) ELSE (CAST (SET_MTH_BEG_PREV_DT AS CHAR(4))) END GROUP BY D.SET_MTH) SYB ON ( SYB.SET_MTH = CASE WOFC_MTH_END_FLG WHEN 'Y' THEN D.YR ELSE SUBSTR (D.PREV_MTH, 1, 4) END || '/12' ) LEFT OUTER JOIN (SELECT DISTINCT D.SET_MTH_END_FLG SET_MTH_END_FLAG, D.SET_MTH PRIOR_SET_CURRENT_MTH, D.SET_BEGIN_MTH_DT PRIOR_SET_CURRENT_MTH_BGN_DT, D.SET_MTH_END_DT PRIOR_SET_CURRENT_MTH_END_DT FROM V_WOFSTGVW.D_DT D) PSETM ON PSETM.PRIOR_SET_CURRENT_MTH = (CAST (ADD_MONTHS (D.SET_BEGIN_MTH_DT, -1) AS CHAR(7))) AND PSETM.SET_MTH_END_FLAG = D.SET_MTH_END_FLG LEFT OUTER JOIN (SELECT DISTINCT D.SET_MTH_END_FLG SET_MTH_END_FLAG, D.SET_MTH PRIOR_SET_REP_MTH, D.SET_BEGIN_MTH_DT PRIOR_SET_REP_MTH_BGN_DT, D.SET_MTH_END_DT PRIOR_SET_REP_MTH_END_DT FROM V_WOFSTGVW.D_DT D) PREPSETM ON PREPSETM.PRIOR_SET_REP_MTH = (CAST (ADD_MONTHS (CASE D.SET_MTH_END_FLG WHEN 'Y' THEN D.SET_BEGIN_MTH_DT ELSE SET_MTH_BEG_PREV_DT END, -1 ) AS CHAR(7)) ) AND PREPSETM.SET_MTH_END_FLAG = D.SET_MTH_END_FLG WHERE V_WOFSTGVW.D.DY <> DATE '9999-12-31';''' re.sub('v_wofstgvw','d_dscteve', a, re.MULTILINE, re.IGNORECASE) ---------- components: Regular Expressions messages: 186300 nosy: ezio.melotti, mrabarnett, z06steve priority: normal severity: normal status: open title: re.sub not replacing all versions: Python 3.2, Python 3.3 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue17663> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com