繁体   English   中英

正则表达式多次匹配模式

[英]regex to match a pattern multiple times

我有以下字符串值

AAA_POERAS::ZNCDAd_EROS_NOW_X_SHRIAPP_Z_DONTKNOW_J1_Z_SUITS_8907_11
BBB_POERAS::ZNCDAd_EROS_NOW_Q_SHRIAPP67_Y_DONTKNOW_J2_Y_THERE_MLA_WHICH_8906_86_25_01

使用正则表达式如何提取如下,去掉最后两位数。

AAA_POERAS::ZNCDAd_EROS_NOW_X_SHRIAPP_Z_DONTKNOW_J1_Z_SUITS_8907
BBB_POERAS::ZNCDAd_EROS_NOW_Q_SHRIAPP67_Y_DONTKNOW_J2_Y_THERE_MLA_WHICH_8906

使用的正则表达式(\_\d{1,2})$仅匹配一种模式,例如。 _11 或 _01。 我也想匹配_25和_86。?

需要帮助。

使用+匹配模式一次或多次。

re.sub(r'(\_\d{1,2})+$', '', string)

演示

利用

re.sub(r'(?:_[0-9]{2})+$', '', input_string)

请参阅正则表达式证明

解释

--------------------------------------------------------------------------------
  (?:                      group, but do not capture (1 or more times
                           (matching the most amount possible)):
--------------------------------------------------------------------------------
    _                        '_'
--------------------------------------------------------------------------------
    [0-9]{2}                 any character of: '0' to '9' (2 times)
--------------------------------------------------------------------------------
  )+                       end of grouping
--------------------------------------------------------------------------------
  $                        before an optional \n, and the end of the
                           string

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM