python - 可以排除捕获组中的某些内容吗?

标签 python regex

假设我有电话号码:

310-5984

我想捕获电话号码中的所有数字,即3105984。我可以使用两个捕获组来完成此操作:

>>> re.match(r'(?P<num_1>\d+)-(?P<num_2>\d+)', '310-5984').groupdict()
{'num_1': '310', 'num_2': '5984'}

是否可以通过一个捕获组获取完整的数字?我尝试做类似的事情:

>>> re.match(r'(?P<num>(?P<num_1>\d+)(?:-)(?P<num_2>\d+))', '310-5984').groupdict()
{'num': '310-5984', 'num_1': '310', 'num_2': '5984'}

但它也消耗了分隔符。如何“使用”分隔符但不将其捕获到组中?或者正则表达式不可能做到这一点?

最佳答案

您可以尝试将 re.sub 与回调函数一起使用,例如

def callback(m):
    return m.group(1) + m.group(2)

phone = "310-5984"
number = re.sub('\\b(\d+)-(\d+)\\b', callback, phone)
print(number)

打印:

3105984

回调函数允许您执行额外的步骤,涉及通过调用 re.sub 获取的所有捕获组。在本例中,我们只是将它们组合起来。

关于python - 可以排除捕获组中的某些内容吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58775248/

相关文章:

python - 从 python 库调用时,Solaris 上的 BeanStalkd 不会返回任何内容

python - Jinja2 填充和对齐字符串

python - 是否可以使用 mkdtemp 定义临时目录的名称?

python - 导出到带有目录的 Jupyter 笔记本的 HTML 不会嵌入绘图

c++ - Python 和 C++ 之间的管道不会关闭

ruby - 将正则表达式与数值和小数匹配

python - 查找正则表达式匹配的字符串长度

python - 如何从字符串中每个单词的末尾删除特殊字符?

regex - 如何在 Oracle 中转义 regexp_replace?

c# - 正则表达式 c# 涉及数字和空格