Skip to content

re.sub not replacing all #61863

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
z06steve mannequin opened this issue Apr 8, 2013 · 3 comments
Closed

re.sub not replacing all #61863

z06steve mannequin opened this issue Apr 8, 2013 · 3 comments

Comments

@z06steve
Copy link
Mannequin

z06steve mannequin commented Apr 8, 2013

BPO 17663
Nosy @ezio-melotti, @bitdancer
Superseder
  • bpo-11957: re.sub confusion between count and flags args
  • Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.

    Show more details

    GitHub fields:

    assignee = None
    closed_at = <Date 2013-04-08.13:36:01.437>
    created_at = <Date 2013-04-08.13:25:17.065>
    labels = ['expert-regex']
    title = 're.sub not replacing all'
    updated_at = <Date 2014-10-29.16:12:53.663>
    user = 'https://bugs.python.org/z06steve'

    bugs.python.org fields:

    activity = <Date 2014-10-29.16:12:53.663>
    actor = 'vstinner'
    assignee = 'none'
    closed = True
    closed_date = <Date 2013-04-08.13:36:01.437>
    closer = 'r.david.murray'
    components = ['Regular Expressions']
    creation = <Date 2013-04-08.13:25:17.065>
    creator = 'z06steve'
    dependencies = []
    files = []
    hgrepos = []
    issue_num = 17663
    keywords = []
    message_count = 3.0
    messages = ['186300', '186302', '186519']
    nosy_count = 4.0
    nosy_names = ['ezio.melotti', 'mrabarnett', 'r.david.murray', 'z06steve']
    pr_nums = []
    priority = 'normal'
    resolution = 'duplicate'
    stage = 'resolved'
    status = 'closed'
    superseder = '11957'
    type = None
    url = 'https://bugs.python.org/issue17663'
    versions = ['Python 3.2', 'Python 3.3']

    @z06steve
    Copy link
    Mannequin Author

    z06steve mannequin commented Apr 8, 2013

    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)

    @z06steve z06steve mannequin added the topic-regex label Apr 8, 2013
    @bitdancer
    Copy link
    Member

    The fourth argument to re.sub is the replacement count. You've passed it a flag.

    @ezio-melotti
    Copy link
    Member

    See bpo-11957.

    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Projects
    None yet
    Development

    No branches or pull requests

    3 participants