重新匹配第一个出现在方括号中的字符

时间:2019-04-17 21:34:36

标签: python regex python-3.x

我正在尝试使用Python 3.7中的re.sub捕获字符串中一个或多个下划线或破折号之前的第一组字符。我当前的功能是:  re.sub(r'(\w+)[-_]?.*', r'\1', x)

示例字符串:

x = 'CAM14_20190417121301_000'
x = 'CAM16-20190417121301_000'

实际输出:

CAM14_20190417121301_000
CAM16

所需的输出:

CAM14
CAM16

当第一组后面有破折号而不是下划线时,为什么它起作用?我还尝试了re.sub(r'(\w+)_?.*', r'\1', x)来试图迫使它抓住下划线,但这返回了相同的结果。我希望代码足够灵活以捕获其中任何一个。

1 个答案:

答案 0 :(得分:1)

\w匹配下划线,请考虑改用此正则表达式:

re.sub(r'([a-zA-Z0-9]+)[-_]?.*', r'\1', x)